【发布时间】:2016-12-17 01:30:24
【问题描述】:
我有几个定义了单独验证器的表单。这些都可以正常工作并按预期进行验证。但是,如果我单击对话框中的取消按钮,它仍然会验证表单并显示错误。我必须单击取消按钮两次才能关闭表单。如果我单击 [x] 关闭对话框,我会短暂看到错误消息,但表单会关闭。我可以忍受。
这是我的代码:
var renewValidator = $("#FormRenew").validate({
rules: {
NewNo: {
remote: {
url: "action.php?checkDup=1"
}
}
}
});
$("#dialog").dialog({
bgiframe: true,
autoOpen: false,
width: 450,
modal: true,
buttons: {
'Renew': function() {
if (renewValidator.valid()) {
$.ajax({
type: "POST",
url: "ajax.php",
data: queryString,
success: function(msg) {...
}
});
$(this).dialog('close');
}
},
Cancel: {
text: 'Cancel',
immediate: "true",
formnovalidate: 'formnovalidate',
class: 'cancel',
click: function(e) {
console.log('Cancel clicked!');
e.preventDefault();
$("form").validate().cancelSubmit = true;
$(this).dialog('close');
}
}
},
beforeClose: function() {
renewValidator.resetForm();
$("#FormRenew").trigger("reset");
}
});
最初我只是有一个简单的取消,像这样取消:
function() {
$(this).dialog('close');
}
但我添加了其他帖子中建议的各种选项。没有一个适合我。
【问题讨论】:
-
请创建一个有效的 jsFiddle 演示。
-
您是否检查了您的 DOM 以确认
formnovalidate="formnovalidate"是取消按钮的 HTML 标记的一部分?这才是最重要的。如果没有,那么你的 jQuery UI 有问题。 -
是的,它是:-(
-
@Sparky - 这是一个显示问题的 jsFiddle 演示。 https://jsfiddle.net/3ob9dhxj/
-
按钮是
type="button",因此无需尝试阻止点击验证,因为它不应该首先发生。换句话说,使用type="button",您必须以编程方式触发验证。但是,在您的示例中,我看不到在哪里触发了验证。这是最奇怪的事情。
标签: jquery jquery-validate jquery-ui-dialog