2013-03-25 87 views
2

我有這個功能,我用它來驗證字母只有當用戶在文本框中輸入的東西。 我剛剛意識到它不接受空格。我將如何解決這個問題?只需將charCode值添加到等式中?Javascript:驗證只有字母和空格

function isLetter2(evt) { 
     evt = (evt) ? evt : event; 
     var charCode = (evt.charCode) ? evt.charCode : ((evt.keyCode) ? evt.keyCode : 
      ((evt.which) ? evt.which : 0)); 
     if (charCode > 31 && (charCode < 65 || charCode > 90) && 
      (charCode < 97 || charCode > 122)) { 
      return false; 
     } 
     return true; 
    } 
+0

爲什麼你不試試它並找出答案?看起來像一個簡單的測試。 – Mathletics 2013-03-25 21:00:27

回答

3

空格是charcode 32(十六進制20),因此只需在第一個if語句之前添加此行即可。

if (charCode == 32) return true; 

後跟您的原始if語句。 (它們之間不需要額外的聲明,因爲函數現在會停止,並在檢測到空格時立即返回true)。

更新:您的原始if語句可以通過De Morgan法則簡化爲< = 31或(包括在65和90之間)或(包括在97和122之間)。所以它也可以正常工作,只是爲了將第一個> 31更改爲> 32,因爲它的否定將是< = 32並導致返回true,從而允許鍵入空格。但我不確定爲什麼你想讓所有其他的小於32的字符都被輸入......這包括很多奇怪的東西。也許你應該改變你的代碼是這樣的:

if (charCode == 32 || 
    (charCode >= 65 && charCode <= 90) || 
    (charCode >= 97 && charCode <= 122)) 
    return true; 
else return false; 

事實上,所有這些比較的結果本身就是等於值true或false值,所以你可以完全消除if/else語句並且只是說:

return charCode == 32 || (charCode >= 65 && charCode <= 90) || (charCode >= 97 && charCode <= 122);