0

2 つの数字を一緒に追加する単純なキャプチャを追加し、フォームが送信されたときに successMessage div も表示しようとしている連絡先フォームがあります。私のフォームは次のようになります。

<form method="post" action="" id="contact">

<div id="successMessage" style="display:none;">Message sent</div>

<label for=name accesskey=U><span class="required">*</span> Your Name</label>
<input name="name" type="text" id="name" size="30" value="" />

<br />
<label for=email accesskey=E><span class="required">*</span> Email</label>
<input name="email" type="text" id="email" size="30" value="" />

<br />
<label for=phone accesskey=P><span class="required">*</span> Phone Number</label>
<input name="phone" type="text" id="phone" size="30" value="" />

<br />

<label for=comments accesskey=C><span class="required">*</span> Your Comments</label>
<textarea name="comments" cols="26" rows="8" id="comments"></textarea>

<hr />

<p style="margin:0px; padding:0px;"><span class="required">*</span>Are You Human?</p>

<label for=verify accesskey=V>3 + 1 =</label>
<input name="verify" type="text" id="verify" size="6" value="" />

<input name="contactus" type="submit" class="submit" id="contactus" value="Submit" />

</form>

<script type="text/javascript">
$(function() {

  $.validator.addMethod("verify", function(value, element, params) {
      return this.optional(element) || value == params[0] + params[1];
  }, jQuery.validator.format("Please enter the correct value for {3} + {1}"));

  $("#contact").validate({

      success: function(label) {
              label.hide();
      },  
      rules: {
          name: {required: true},
          email: {
            email: true,
            required: true
          },
          phone: {
            digits: true
          },
          comments: {required: true}
      },
      messages: {
          name: "Please tell us your Name",
          email: "Please enter a valid email address",
          comments: "Please enter your comments"
      }

  });
});
</script>

addMethod を使用して誰かが検証フィールドに 4 を入力したことを確認しようとしたことがわかりますが、フィールドは検証されていません。

誰かがそれを機能させ、フォームが送信されたときにグローバルな成功メッセージを表示するのを手伝ってくれるとありがたい.

ありがとうございました。

4

2 に答える 2

0

メソッドを指定しましたが、使用しませんでした。これがJavascriptでの簡単な修正です。

<script type="text/javascript">
$(function() {
  $.validator.addMethod("verify", function(value, element, params) {
      return this.optional(element) || parseInt(value, 10) == params[0] + params[1];
  }, jQuery.validator.format("Please enter the correct value for {0} + {1}"));
  $("#contact").validate({
      success: function(label) {
              label.hide();
      },  
      rules: {
          name: {required: true},
          email: {
            email: true,
            required: true
          },
          phone: {
            digits: true
          },
          comments: {required: true},
          verify:{
            verify:[3, 1]
          }
      },
      messages: {
          name: "Please tell us your Name",
          email: "Please enter a valid email address",
          comments: "Please enter your comments"
      }
  });
});
</script>
  1. エラー メッセージが「{0} + {1}」になるように更新されました。
  2. verify フィールドの verify メソッドと呼ばれます。別の名前を使用したり、フィールドとカスタム メソッドを混同したりすることがあります。
于 2013-08-02T13:39:13.510 に答える
0

値が文字列であるため、整数を解析する必要があることを全員に知らせるだけです。あなたは等しいことをしているので、両方とも整数である必要があります。

次のように「値」を parseInt でラップするだけです。

return this.optional(element) || parseInt(value, 10) == params[0] + params[1];
于 2014-03-07T08:09:32.777 に答える