2014-01-10 155 views
0

這個正則表達式一直返回false,我看不出爲什麼? 我有一個觸發這個事件的onkeydown事件,我嘗試了'w'鍵,它不起作用。正則表達式不起作用

var keyGLOB = ''; 

function editProductSearch (event) { 
    console.log(keyGLOB); 
    var key = String.fromCharCode(event.keyCode); 
    if(event.keyCode == 8) { 
     keyGLOB = keyGLOB.substring(0, keyGLOB.length -1); 
     return false; 
    } 
    var regex = /^[a-zA-Z0-9]+$/; 
    if(regex.test(key)) { 
     if(regex.test(keyGLOB)) { 
      keyGLOB += key; 
      searchDb(keyGLOB.toLowerCase()); 
     } else { 
      alert('letters and numbers only!'); 
      return false; 
     } 
    } else { 
     alert('letters and numbers only!'); 
     return false; 
    } 
} 

HTML:

<p><input id='product-edit-search' onkeydown='editProductSearch(event)'></p> 
+6

你在對什麼進行測試? – Andy

+2

什麼是'鑰匙'?什麼是keyGLOB? –

+3

因爲'key'和/或'keyGLOB'包含字母和數字以外的東西嗎?沒有你的投入,人們應該如何猜測發生了什麼? –

回答

5
if(regex.test(keyGLOB)) { 
     keyGLOB += key; 

if語句,keyGLOB仍然是一個空字符串基於它是如何在你的程序,我相信將返回false基於早先定義在你的正則表達式。

+0

就是這樣!謝謝,我可以添加到正則表達式,以允許它接受一個空字符串? – user3105607

+0

是的。被觸發的'alert'實際上是'if(regex.test(keyGLOB)){'的'else'子句中的一個,而不是外部的那個。看來OP在誤認另一個。 – acdcjunior

+2

只需使文本可選:'/^[a-zA-Z0-9] * $ /'('*'而不是'+')。 – acdcjunior