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>

ただし、2つを連携させることはできません。具体的には、[送信] ボタンがクリックされた後に検証が失敗した場合 (フォームがどのように機能するかによって発生します)、「クリックされた」プロパティをリセットするブラウザーの更新を行わない限り、フォームを再度送信することはできません。

上記の 2 番目のメソッドを書き直して、フォームが検証されない限りクリックされたプロパティを設定しないようにするにはどうすればよいですか?

どうも。

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 に答える