我有这个函数,仅当用户在文本框中输入内容时才用它来验证字母。 我刚刚意识到它不接受空格。我该如何解决这个问题?只需将 charCode 值添加到方程中即可?
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;
}
最佳答案
空格是字符码 32(十六进制 20),因此只需在第一个 if 语句之前添加此行即可。
if (charCode == 32) return true;
后跟您原来的 if 语句。 (它们之间不需要额外的 else 语句,因为一旦检测到空格,函数就会停止并返回 true。)
更新:您的原始 if 语句可以通过德摩根定律简化为 <= 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);
关于Javascript:仅验证 alpha 和空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15624521/