1

我是新的 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>

但是,我无法让两者一起工作。具体来说,如果在单击提交按钮后验证失败(考虑到表单的工作方式,这种情况会发生),那么除非我进行浏览器刷新以重置“已单击”属性,否则我将无法再次提交表单。

除非表单验证,否则如何重写上面的第二种方法以不设置 clicked 属性?

谢谢。

4

3 回答 3

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();
    }
});
于 2011-05-18T23:27:41.950 回答
0

如果你使用这个验证插件,它带有一个 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);
      };
  });
于 2010-04-05T22:39:12.273 回答
0

我会这样做:

$('#PageForm').submit(function() {
   if($(this).valid()) $(':submit', this).attr('disabled', true);
});

这是在提交表单时触发的,查找内部的任何提交按钮并在表单有效时禁用它。

准备好后用于$('#PageForm :submit').removeAttr('disabled');重新启用按钮。

于 2010-04-06T01:41:23.623 回答