Jquery 验证器 valid() 函数在提交时不起作用

Jquery Validator valid() function not working on submit

我们在一个页面应用程序中有多个表单。单个表单有其单独的保存按钮,单个表单在该按钮上得到验证,如果有效(使用 jquery 验证器 .valid() 方法),则记录将保存在数据库中,该数据库工作正常。

我们在这里面临的问题是,当在最后提交的最后一个表单中时,当我们尝试使用 .valid() 方法验证所有其他表单以进行验证时,它总是 returns true 无论如何错误的验证。

$("#submitForm").submit(function(event) {
     $("#educationForm").validate();
     console.log($("#educationForm").valid());

});

这里console也给出true,即使教育表单无效

请帮助我们解决这个问题。

此致, 苏沃吉特

valid() function not working on submit

.valid() 方法旨在以编程方式触发验证测试。当您单击 "submit" 时,插件会自动执行验证测试,因此在 "submit" 事件上也调用 .valid() 没有意义。


我想你可能误会了the basic usage...

$("#submitForm").submit(function(event) {
     $("#educationForm").validate();            // <- INITIALIZES PLUGIN
     console.log($("#educationForm").valid());  // <- TEST VALIDATION
});
  • 永远不会.validate() 放在事件处理程序中,而不是 DOM 就绪处理程序。 .validate()方法是插件初始化的方式

  • 正确初始化后,插件自动捕获提交按钮的点击事件

通过将它放在 .submit() 处理程序中,您会干扰插件,该插件已经在尝试捕获完全相同的事件。

改为放入 DOM 就绪事件处理程序...

$(document).ready(function() {

     $("#educationForm").validate();            // <- INITIALIZES PLUGIN

     console.log($("#educationForm").valid());  // <- TEST VALIDATION

});

工作演示:http://jsfiddle.net/2vugwyfe/

或:http://jsfiddle.net/2vugwyfe/1/


验证测试由任何 type="submit" 元素自动触发。

如果您需要通过单击其他类型的元素来触发验证测试,请使用自定义 .click() 处理程序...

$(document).ready(function() {

     $("#educationForm").validate();            // <- INITIALIZES PLUGIN

     $("#button").on('click', function() {
         $("#educationForm").valid();  // <- TEST VALIDATION
     });

});

演示 2:http://jsfiddle.net/pdhvtpdq/


编辑:

要检查不同的表单是否有效,请使用 submitHandler 选项中的 .valid() 方法。

在此示例中,当 "Form A" 的 submitHandler 触发时,它会在允许提交之前检查 "Form B" 是否有效。

$(document).ready(function() {

     $("#form_A").validate({              // initialize plugin on Form A
         submitHandler: function(form) {  // fires when Form A is valid
             if($("#form_B").valid()) {   // tests if Form B is valid
                 $(form).submit();        // submit Form A
             }
         }
     });

});