JQuery的验证问题

时间:2012-12-11 14:54:10

标签: javascript jquery html jquery-validate

我正在进行JQuery验证,如下所示:(我对jquery的了解不多)..

我无法完成以下任务:

  1. 仅字母a到z(小写),“ - ”(短划线或连字符)和“” (空格)是允许的,
  2. 必须输入“ - ”(破折号)和“”(空格)字母,
  3. “ -​​ ”或“”字母不得为第一个或最后一个 输入了一封信,
  4. “ -​​ ”不得是直接邻居或邻近(在或之前) 之后)到“”,
  5. “ -​​ ”或“”不能是直接邻居(邻近) 本身。
  6. “电话号码”字段(4位区号,空格,7位数字 当地代码)

  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>
    

    请有人帮我实现这个目标..

1 个答案:

答案 0 :(得分: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

然后根据需要格式化它们。