2015-08-31 56 views
0

我有一個文本框,當我點擊返回或單擊按鈕時發送文本到div。我需要排除字符串並提供包含不在我的白名單中的字符的錯誤消息。我希望可以在用戶提交文本時檢查字符串,而不是在輸入時檢查每個字符。JavaScript文本框 - 不要使用非白名單字符提交

我試過去正則表達式測試路線,但它返回true,如果有任何字符匹配我的白名單,而不是如果每個字符匹配。 (代碼只信我的白名單中,但我自己可以在以後更改部分。)

 function valTxt(x) { 
      var patt=/[a-z]/i; 
      if (patt.test(x)) { 
       document.getElementById("valMsg").innerHTML = "Contains letters."; 
      } 
      else { 
       document.getElementById("valMsg").innerHTML = "Does not contain letters."; 
      } 
     } 

我需要使用一個循環來檢查每個字符,或者是有沒有做什麼預定義的函數或方法我想要做?

+0

首先,將^和$放在你的模式中。 – lintmouse

+0

更改事件。不要在提交之前運行代碼,無論如何應該是AJAX。 – PHPglue

回答

0

你只需要你的正則表達式的開始和結束錨點。這告訴它,開始和結束之間的0或更多字符必須是你的白名單

function valTxt(x) { 
     var patt=/^([a-zA-Z])*$/; 
     if (patt.test(x)) { 
      // matched 
     } else { 
      // didn't match 
     } 
} 
+0

令人驚歎!非常感謝。 –

+0

我仍然有點困惑,這是如何工作的。 ^和$是否意味着「匹配括號中的所有字符」?如果不是,那是什麼? –

+0

'^'是文本開始的「標記」,同樣'''是文本結尾的標記。 '/ oob /'會匹配'foobar',但'/^oob /'和'/ oob $ /'不會因爲「oob」不在字符串的開始或結尾。 – ShaharZ