一個更優雅且快速的解決方案是簡單地替代默認的點擊和上KEYUP事件添加代碼,你需要如下的而不是添加另一個聽的事件
$("#form").validate({
submitHandler: function(form) {
form.submit();
},
onkeyup: function(element, event) {
if (event.which === 9 && this.elementValue(element) === "") {
return;
} else if (element.name in this.submitted || element === this.lastElement) {
this.element(element);
}
if (this.checkForm()) { // checks form for validity
$('a.submit').attr('class', 'submit btn btn-success'); // enables button
} else {
$('a.submit').attr('class', 'submit btn btn-danger disabled'); // disables button
}
},
onclick: function(element) {
// click on selects, radiobuttons and checkboxes
if (element.name in this.submitted) {
this.element(element);
// or option elements, check parent select in that case
} else if (element.parentNode.name in this.submitted) {
this.element(element.parentNode);
}
if (this.checkForm()) { // checks form for validity
$('a.submit').attr('class', 'submit btn btn-success'); // enables button
} else {
$('a.submit').attr('class', 'submit btn btn-danger disabled'); // disables button
}
}
})
隨着下面的CSS代碼提交觸發 - 最初禁用(引導3班):
<a onclick="if(!$(this).hasClass('disabled')) { $('#form').submit(); }" class="submit btn btn-danger disabled">button_save</a>
這可以很容易地與jQuery插件areYouSure使用,只啓用提交時實際更改:
if (this.checkForm() && $('#form').hasClass('dirty')) { // checks form for validity
初始化插件使用無聲:
$('#form').areYouSure({'silent':true});
菲爾,你到底來解決這一問題?你能提供你的最終解決方案嗎? – Blair 2010-12-16 04:15:37
@blairyeah - 查看Michael Irgoyen的答案 – ripper234 2012-03-07 12:20:21