jquery新手:将validation与隐藏提交按钮相结合
我是一个新的jQuery。 我已经validation了使用我的表单(MVC 1.0 / C#):
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: "A Sig Value is required. " } }); });
我还想隐藏“提交”按钮以防止在控制器完成和重定向之前导致重复输入(我正在使用GPR模式)。 以下工作用于此目的:
// // 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; } });
但是,我不能让两者一起工作。 具体来说,如果在单击“提交”按钮后validation失败(根据表单的工作方式发生),那么除非我执行浏览器刷新以重置“已点击”属性,否则我无法再次提交表单。
除非表单validation, 否则如何重写上面的第二种方法不设置clicked属性?
谢谢。
对于那些仍在寻找像我一样的答案的人来说,我就是这样做的:
$("#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(); } });
如果你正在使用这个validation插件,它会附带一个valid()方法。
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); }; });
我会这样做:
$('#PageForm').submit(function() { if($(this).valid()) $(':submit', this).attr('disabled', true); });
这是在提交表单时触发,查找内部的任何提交按钮,如果表单有效则禁用它。
使用$('#PageForm :submit').removeAttr('disabled');
准备好后重新启用按钮。