你的代码:
if($('#cartForm').length > 0) {
$('#proceedCheckout').on('click', function (event) {
console.log('HSA');
$('#changeCountry').validate({ // <-- move out of here
errorClass: 'alert-error'
});
event.preventDefault(); // <-- should always be first in a function
});
}
.validate()
应该用于在 DOM 就绪的表单上初始化插件(及其选项)。由于您在每次点击时都重新初始化,因此您会看到意外的行为。
您还以不存在#changeCountry
的地方为目标,因此我添加了与两个标签相对应的标签。id
id
id
form
每当您有两个表单并且一个表单的提交取决于另一个表单的验证状态时,请使用插件的.valid()
方法来测试另一个表单。
尝试更多类似的东西:
$(document).ready(function () {
// call .validate() to initialize the plugin
$('#changeCountry').validate({
errorClass: 'alert-error'
});
// on click, test the form using .valid()
$('#proceedCheckout').on('click', function (event) {
event.preventDefault();
if ($('#changeCountry').valid()) {
$('#cartForm').submit(); // passes validation
} else {
// failed validation
}
});
});
演示:http: //jsfiddle.net/B9d8A/
$('#changeCountry').validate()
在form
with上初始化 validate 插件id
#changeCountry
。
$('#changeCountry').valid()
以编程方式触发实际验证测试并返回一个true/false
布尔值。
完整文档:
http://docs.jquery.com/Plugins/Validation