2013-06-28 184 views
0

我寫一個例程驗證輸入。它工作正常,但是當我輸入字符a時,它只是接受。這是我的代碼。輸入驗證通過javascript

function isValidPhoneNumber(val) { 
     var flag = true; 
     var invalidChars = "[email protected]!$#"; 
     if (flag) { 
      for (index = 0; index <= val.length - 1; index++) { 
       var phchars = val.substring(index, index + 1); 
       if (invalidChars.indexOf(phchars) > 0) { 
        flag = false; 
        break; 
       } 
      } 
     } 
     return flag; 
    } 

假設如果我給了val ='+ 9122a5669974'那麼它返回true。 indexof函數無法找到a ....爲什麼。請告訴我日常工作中出了什麼問題。如果發現存在於invalidChars變量中的任何字符,那麼例程應該返回false,但是當找到然後例程返回true時。幫助我發現錯誤。謝謝

+3

使用正則表達式的VOR這種練習 –

+0

對於信息正則表達式在JavaScript中你可以查看[這裏](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions)和[這裏](http://www.w3schools.com /jsref/jsref_obj_regexp.asp)。你可以在[RegExr](http://gskinner.com/RegExr/)上測試它們,並且w3schools有一些[示例](http://www.w3schools.com/js/js_obj_regexp)。 asp)向你展示如何使用它們。 –

回答

2

你行

if (invalidChars.indexOf(phchars) > 0) { 

應該

if (invalidChars.indexOf(phchars) > -1) { 
然而

,我會考慮使用正則表達式作爲一個更好的辦法。

2

請嘗試下面的代碼行。

if (invalidChars.indexOf(phchars) != -1) { 
1

嘗試這種方式,

jQuery.validator.addMethod("mobileNL", function(value, element) { 
return this.optional(element) || /^((\+|00(\s|\s?\-\s?)?)31(\s|\s?\-\s?)?(\(0\)[\- \s]?)?|0)6((\s|\s?\-\s?)?[0-9]){8}$/.test(value); 
}, "Please specify a valid mobile number"); 

提到的方法在附加methods.js

它使用jQuery驗證插件,用於客戶端驗證的樂趣可用。重要的是,你可以添加你的自定義方法。

  1. 下載&添加下面的腳本大師,佈局或任何你想要啓用客戶端驗證。

    1.1的jquery-1.8.3.min.js(或以上)鏈接:http://code.jquery.com/jquery-1.8.3.min.js

    1.2 jquery.validate.min.js &附加methods.js(http://jqueryvalidation.org/

2 。現在創建您的驗證規則&消息。例如

var jq = jQuery.noConflict(true); 
(function ($) { 
$(document).ready(function() { 

    $('#FormName').validate({ 
     highlight: function (element, errorClass, validClass) { 
      $(element.form).find("input[id=" + element.id + "]").addClass("input"); 

     }, 
     rules: { 
      PhoneNumber: { 
       required: false, 
       mobileNL: true, 
       max: 10 
      } 

     }, 
     messages: { 
      PhoneNumber: { 
       mobileNL: "Please enter a correct phone", 
       max: "Please specify the number less or equal to 10" 
      } 

     }, 
     submitHandler: function (form) { 
      form.submit(); 
      return false; 
     } 
    }); 
}); 
})(jq); 

創建一個新的js文件,保存爲jq_validation.js添加上面的代碼。並調用它的順序

  1. 你的HTML應該是這樣的,做。

    「<%:Html.TextBoxFor(型號=> model.PhoneNumber,新{@class = 」輸入「}​​)%>」

+0

如何調用這個方法?你能表現出來嗎?上述正則表達式如何工作......它會接受什麼樣的字符。謝謝 – Thomas

+0

您可以根據您的電話號碼格式更改正則表達式。或讓我知道你的電話號碼格式,可以幫助你寫正則表達式。 – AnandMohanAwasthi

+0

謝謝...工作完成。 – Thomas