0

私は以下のようにJQueryの検証に取り組んでいます: (私はjqueryをあまり認識していません)..

以下のことを達成できません:

  1. a から z (小文字)、"-" (ダッシュまたはハイフン)、および " " (スペース) の文字のみを使用できます。
  2. "-" (ダッシュ) と " " (スペース) の文字を入力する必要があります。
  3. 「-」または「 」の文字は、入力する最初または最後の文字であってはなりません。
  4. "-" は " " のすぐ隣または隣接 (前後) であってはなりません。
  5. "-" または " " は、それ自体のすぐ隣 (隣接) であってはなりません。
  6. 「電話」番号フィールド (4 桁の市外局番、スペース、7 桁のローカル コード)


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
  <head>
  <script type="text/javascript" 
          src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js">
  </script>

  <script type="text/javascript" 
          src="http://jzaefferer.github.com/jquery-validation/jquery.validate.js">
  </script>

  <script>
    $(document).ready(function(){
      $("#commentForm").validate({
        onfocusout: function(element) { $(element).valid(); } ,
        rules: {
            fullname : {
              required: true,
              maxlength: 14,
            },                  
            email: {
              required: true,
              email: true
            }
        },
        messages: {
            fullname : {
              required: "Please specify your Full Name",
              maxlength:  "Please enter only upto 14 characters",
            },
            email: {
              required: "We need your email address to contact you",
              email: "Your email address must be in the format of name@domain.com"
            }
        }
      });
   });

   </script>

  </head>

  <body>

    <form id="commentForm" method="get" action="">

       <fieldset>

       <p>
         <label for="fullname">Full Name</label>
         <em>*</em><input id="fullname" name="fullname" size="25" class="required"  maxlength="14" />
       </p>


       <p>
         <label for="email">E-Mail</label>
         <em>*</em><input id="email" name="email" size="25"  class="required email" />
       </p>

     </fieldset>

  </form>
  </body>
</html>

誰かがこれを達成するのを手伝ってください..?

4

1 に答える 1

0

正規表現を使おう!!

  • a から z (小文字)、"-" (ダッシュまたはハイフン)、および " " (スペース) の文字のみを使用できます

    !/[^a-z0-9 -]/.test(input)

  • "-" (ダッシュ) と " " (スペース) の文字を入力する必要があります。

    / /.test(input) && /-/.test(input)

  • 「-」または「 」の文字は、入力する最初または最後の文字であってはなりません。

    !/^[ |-]|[ |-]$/.test(input)

  • "-" は " " のすぐ隣または隣接 (前後) であってはなりません。

  • "-" または " " は、それ自体のすぐ隣 (隣接) であってはなりません。

    !/ -|- |--| /.test(input)

  • 「電話」番号フィールド (4 桁の市外局番、スペース、7 桁のローカル コード)

    /^\d{4} \d{7}$/.test('1234 1234567')

この式のそれぞれは、条件が満たされた場合に true を返し、それ以外の場合は false を返します。次のように使用します。

var input = $('some-selector').value();
if(
  !/[^a-z0-9 -]/.test(input) &&
  / /.test(input) && /-/.test(input) &&
  !/^[ |-]|[ |-]$/.test(input) &&
  !/ -|- |--|  /.test(input) &&
  /^\d{4} \d{7}$/.test(input )
){
   //do something
}

さらに良いことに、電話番号をフォーマットする場合は、数字以外の文字をすべて削除してください。

input = input.replace(/[^0-9]/,'')

それらを数えます(それらは11でなければなりません)

input.length == 11

必要に応じてフォーマットします。

于 2012-12-11T16:18:34.850 に答える