我是一个新的jQuery。我已经验证了使用我的表单(MVC 1.0 / C#):
<script type="text/javascript">
if (document.forms.length > 0) { document.forms[0].id = "PageForm"; document.forms[0].name = "PageForm"; }
$(document).ready(function() {
$("#PageForm").validate({
rules: {
SigP: { required: true }
},
messages: {
SigP: "<font color='red'><b>A Sig Value is required. </b></font>"
}
});
});
</script>
我还想隐藏“提交”按钮,以防止在控制器完成和重定向之前导致重复输入(我正在使用GPR模式)。以下工作用于此目的:
<script type="text/javascript">
//
// prevent double-click on submit
//
jQuery('input[type=submit]').click(function() {
if (jQuery.data(this, 'clicked')) {
return false;
}
else {
jQuery.data(this, 'clicked', true);
return true;
}
});
</script>
然而,我不能让两者一起工作。具体来说,如果在单击“提交”按钮后验证失败(根据表单的工作方式发生),那么除非我执行浏览器刷新以重置“已点击”属性,否则我无法再次提交表单。
如何重写上面的第二种方法,不设置点击的属性除非表格验证?
THX。
答案 0 :(得分:1)
对于那些仍在寻找像我一样的答案的人,我就是这样做的:
$("#form1").validate({
rules: {
customer_title: "required",
customer_firstName: "required",
customer_lastName: "required"
}
},
messages: {
customer_title: "Please select a title",
customer_firstName: "Please enter a firstname",
customer_lastName: "Please enter a lastname"
}
},
submitHandler: function(form) {
//submitButtonX is the class attribute i placed on the button
$('.submitButtonX').attr('disabled', 'disabled');
form.submit();
}
});
答案 1 :(得分:0)
如果您使用的是this验证插件,则会附带一个有效的()方法。
jQuery('input[type=submit]').click(function() {
var self = $(this);
if (self.data('clicked')) {
return false;
} else if (self.closest('form').valid()) {
self.data('clicked', true);
return true;
};
});
甚至:
jQuery('input[type=submit]').click(function(event) {
var self = $(this);
if (self.closest('form').valid()) {
self.attr('disabled', true);
};
});
答案 2 :(得分:0)
我会这样做:
$('#PageForm').submit(function() {
if($(this).valid()) $(':submit', this).attr('disabled', true);
});
这是在提交表单时触发,查找内部的任何提交按钮,如果表单有效则禁用它。
准备好后,使用$('#PageForm :submit').removeAttr('disabled');
重新启用该按钮。