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
}
}
});
});
我们在一个页面应用程序中有多个表单。单个表单有其单独的保存按钮,单个表单在该按钮上得到验证,如果有效(使用 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
}
}
});
});