2013-03-25 188 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);