为什么只验证第一个表单
Why only first form is validated?
请参阅下面的fiddle。
<form action="http://someurl.com/" id="test-form-1" method="post" name="test-form-1">
<input class="test-domainurl" type="url"> <input class="test-order-button" type="submit" value="Continue to Order">
</form>
<form action="http://someurl.com/" id="test-form-2" method="post" name="test-form-2">
<input class="test-domainurl" type="url"> <input class="test-order-button" type="submit" value="Continue to Order">
</form>
jQuery(document).ready(function($) {
$(".test-order-button").click(function() {
$("#test-form-1").validate({});
$("#test-form-2").validate({});
$(".test-domainurl").rules("add", {
required: true
});
});
});
http://jsfiddle.net/vak87/
我不知道为什么只有第一个表格是有效的?
有什么想法和建议吗?
感谢
您应该在css选择器中使用$(this)
,并使用parent()
和siblings('.test-domainurl')
来查找与每个按钮对应的元素。
jQuery(document).ready(function($) {
$(".test-order-button").click(function() {
$(this).parent().validate({});
$(this).siblings('.test-domainurl').rules("add", {
required: true
});
});
});
jsFiddle示例
关于您对代码在IE7和IE8中不起作用的评论…
1) 您绝对不需要将.validate()
包含在click
事件处理程序中。.validate()
方法只是插件的初始化,而不是测试方法。.validate()
方法只需要在DOM ready上调用一次,并且任何后续调用都将被忽略。执行验证测试是因为插件会自动捕获点击。
2) 将.rules()
方法附加到包含多个元素的jQuery对象时,必须将其包含在jQuery .each()
中。否则,.rules()
方法将只将规则分配给第一个匹配元素。
这是正确的方式。。。
jQuery(document).ready(function($) {
$("#test-form-1").validate({}); // intialize plugin on first form
$("#test-form-2").validate({}); // intialize plugin on second form
$(".test-domainurl").each(function() { // select applicable inputs
$(this).rules("add", { // apply the rule to each selected input
required: true
});
});
});
我从未使用过验证插件,但我的猜测是选择器仅限于插件中的第一个匹配项。如果你单独添加规则,它似乎是有效的。
示例:
jQuery(document).ready(function($) {
$(".test-order-button").click(function() {
$("#test-form-1").validate({});
$("#test-form-2").validate({});
$(".test-domainurl").each(function(index, el) {
$(el).rules("add", {
required: true
});
});
});
});
相关文章:
- 为网站表单创建一个专业的日历
- 使用javascript从表单发布一个值,然后使用php发布
- Javascript表单.使一个条目依赖于另一个条目
- javascript表单提交一个值应该大于另一个值x>y
- 两个表单,一个选择/下拉框-需要将选择值从一个表单复制到另一个表单
- 几个 Ajax 添加到购物车表单在一个页面上
- 表单操作 一个外部 JavaScript 函数
- 一次提交两个 HTML 表单,一个在当前窗口中,一个在新窗口中
- javascript 如何区分表单的一个按钮和另一个按钮
- 如何使用 JQuery 获取表的第一个 td 的值
- 对单个页面上的多个表单使用一个脚本
- 在表中第一个tr的倒数第二个td中选择按钮-使用jQuery选择器
- 在javascript中删除TR表的第一个TD
- 如何防止jquery验证表单只有一个按钮
- 在提交jsf按钮时向表单传递一个javascript值
- html嵌套表通过单击表行第一个td来隐藏或显示表行
- 我的php表单有一个三个文本框,每个文本框都有ID和Name
- 如何使用JavaScript将多个HTML表单作为一个表单提交到PHP脚本
- 禁用发布表单的一个表单元素的发布
- 在AngularJS中用表单传递一个过滤器