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'); 准备好后重新启用按钮。