2012-08-14 39 views
0

我試圖使用這個jQuery插件http://bassistance.de/jquery-plugins/jquery-plugin-validation,這樣我就可以驗證我正在創建的表單。但它似乎並沒有驗證手機領域。任何人都可以幫助我理解我做錯了什麼?使用表單驗證插件時遇到問題

這是到目前爲止我的代碼

<script type="text/javascript"> 
var validator 
jQuery(document).ready(function() { 
    validator = jQuery("#participateform").validate(); 
}); 

function sendRequest(){ 
     var validform=validator.form();  
     if(validform) 
     { 
      alert("Form is valid"); 
     } 
} 
</script> 

<form id="participateform" > 
    <div class="table"> 
     <div class="tr"> 
      <div class="td">fullname</div> 
      <div class="td"> 
       <input type="text" value="" id="fullname" name="fullname" class="required" /> 
      </div> 
     </div> 
     <div class="tr"> 
      <div class="td">your e-mail </div> 
      <div class="td"> 
       <input type="text" value="" id="e-mail" name="e-mail" class="required email" /> 
      </div> 
     </div> 
     <div class="tr"> 
      <div class="td">area</div> 
      <div class="td"> 
       <select id="area" name="area"></select> 
      </div> 
     </div> 
     <div class="tr"> 
      <div class="td">Phone 1</div> 
      <div class="td"> 
       <input type="text" value="" id="phone" name="phone" class="required phone"/>     
      </div> 
     </div> 
     <div class="tr"> 
      <div class="td">Phone 1</div> 
      <div class="td"> 
       <input type="text" value="" id="phone2" name="phone2" /> 
      </div> 
     </div> 

    </div> 

    <input type="button" id="btnsubmit" value="submit" onclick="sendRequest()"> 
</form> 
+1

參見[這裏](http://bassistance.de/jquery-plugins/jquery插件驗證/)有一個'jQuery.validator.addMethod(「電話」,功能(pnumber)'代碼爲手機 – 2012-08-14 12:36:46

+0

延長驗證Thanx亞歷克斯球似乎是,如果我添加就緒jQuery.validator .addMethod(「phone」,函數(pnumber){ \t \t \t var stripped = pnumber.replace(/ [\(\)\。\ - \]/g,''); \t \t \t if(isNaN(parseInt(stripped))||!(stripped。長度== 10)){ \t \t \t \t返回假; \t \t \t}其他{ \t \t \t \t迴歸真實; \t \t \t} \t \t},「請指定一個有效的電話號碼」); 作品現在 – themis 2012-08-14 12:41:28

回答

2

的源代碼庫顯示,該庫使用下面的驗證規則電話:

jQuery.validator.addMethod("phoneUS", function(phone_number, element) { 
    phone_number = phone_number.replace(/\s+/g, ""); 
    return this.optional(element) || phone_number.length > 9 && 
     phone_number.match(/^(1-?)?(\([2-9]\d{2}\)|[2-9]\d{2})-?[2-9]\d{2}-?\d{4}$/); 
}, "Please specify a valid phone number"); 

jQuery.validator.addMethod('phoneUK', function(phone_number, element) { 
    phone_number = phone_number.replace(/\s+|-/g,''); 
    return this.optional(element) || phone_number.length > 9 && 
     phone_number.match(/^(\(?(0|\+44)[1-9]{1}\d{1,4}?\)?\s?\d{3,4}\s?\d{3,4})$/); 
}, 'Please specify a valid phone number'); 

jQuery.validator.addMethod('mobileUK', function(phone_number, element) { 
    phone_number = phone_number.replace(/\s+|-/g,''); 
    return this.optional(element) || phone_number.length > 9 && 
     phone_number.match(/^((0|\+44)7(0|4|5|6|7|8|9){1}\d{2}\s?\d{6})$/); 
}, 'Please specify a valid mobile number'); 

//Matches UK landline + mobile, accepting only 01-3 for landline or 07 for mobile to exclude many premium numbers 
jQuery.validator.addMethod('phonesUK', function(phone_number, element) { 
    phone_number = phone_number.replace(/\s+|-/g,''); 
    return this.optional(element) || phone_number.length > 9 && 
     phone_number.match(/^(0[1-3]{1}[0-9]{8,9})$/) || phone_number.match(/^(07[5-9]{1}[0-9]{7,8})$/); 
}, 'Please specify a valid uk phone number'); 

所以不是這樣:

<input type="text" value="" id="phone" name="phone" class="required phone"/> 

試試這個美國電話號碼:

<input type="text" value="" id="phone" name="phone" class="required phoneUS"/> 

或者,這對於英國電話號碼:

<input type="text" value="" id="phone" name="phone" class="required phoneUK"/> 

OR這對於英國的移動電話號碼

<input type="text" value="" id="phone" name="phone" class="required mobileUK"/> 
+0

是的和作品,謝謝你,你是 – themis 2012-08-14 12:42:34

+1

歡迎:) – Amyth 2012-08-14 12:43:42

2

是什麼樣的驗證失敗的電話嗎?

快速查看source code令手機缺乏作爲驗證類。

編輯

您需要添加自定義規則:

$(document).ready(function(){ 

    $.validator.addMethod("phone", function(value, element) { 
    //Any code that will return TRUE or FALSE 
    return /^(\d+){10}$/.test(value); 
    }, 
    "Error message"); 

}); 
+0

好,我需要它來驗證如果一個10位數的電話號碼 – themis 2012-08-14 12:35:49

1

嘗試lookk here,看來你應該使用其他內置的驗證方法,如digits()phoneUS()