2012-12-13 31 views
0

如果我們只允許字符和空格,我們通常會比較javascript中的ASCII值。但是如果我們支持多種語言,那麼檢查失敗。請告訴我這一點,考慮到其他語言的任何其他方式太... 我們通常使用JavaScript就是這樣 - >使用ASCII檢查字符和空格對其他語言無效

function charAndSpacesOnly(objEvent) { 
    if((objEvent.keyCode>=97 && objEvent.keyCode<=122) || (objEvent.keyCode>=65 && objEvent.keyCode<=90) || (objEvent.keyCode==32) || (objEvent.keyCode==45)) {  
     return true; 
    } else { 
     return false; 
    } 
    return false;  
} 

回答

0

那是因爲你很嚴格,只允許拉丁字母,26個字母,沒有任何變音符號,更不用說東方,西里爾文或中文字。

可能擴展如果支持所有這些字符。只需從互聯網上抓取包含所有這些代碼的表格,並且在一兩天內即可實現每一個明智的unicode字符範圍。

但我想你應該問問自己,如果你需要這個限制。人們可以隨時進入垃圾,如果他們想要的話,AaAaAaAaAa(您的支票很好)真的比Golez Trol the 3rd更有效嗎?

PS:您的else {return false;}已過時。

+0

ASCII只包含英文字符,我如何驗證其他語言的字符。 –

+0

是什麼讓你認爲你的角色是ASCII碼?你被綁定到鍵碼,但它們並不完全是ASCII碼。但我認爲你是對的:你可能永遠不會得到中文的密碼。我想,而不是驗證按鍵,你最好檢查你正在處理的輸入(或其他)的上下文。這樣你也可以防止人們粘貼無效字符。捕獲按鍵只是不安全。但是,我認爲你應該不需要像這樣的檢查。 – GolezTrol

0

我想這跟objEvent.keyCode<=122有什麼關係。所以122(其他語言)之後的所有字符都排除在外。

+0

條件說A到Z,A到Z,空間和 - 被接受。其他任何東西都會被省略。 –

+0

這就是要點。其他語言的字符在ASCII 127之上,因此省略這些字符使其無法工作。 – NawaMan