我只需输入英文类型,为此输入添加功能:
function englishType() {
$('input[lang^=en]').keypress(function(event){
var ew = event.which;
if(ew == 32)
return true;
if(48 <= ew && ew <= 57)
return true;
if(65 <= ew && ew <= 90)
return true;
if(97 <= ew && ew <= 122)
return true;
alert("error");
return false;
});
}
但是用户可以复制تست
(其他语言中的任何单词)并粘贴此输入而不使用此代码!
.keypress不适用于Copy and Paste
。
我该如何解决?
答案 0 :(得分:1)
首先,您需要使用keyup
事件,而不是keypress
。
其次,如果您希望用户阻止粘贴非英文字符,则需要处理所有event.target.value
以清除您不想要的字符,或引发错误,无论如何情况如此。你可以使用正则表达式;范围[a-zA-Z ]
应该可以正常工作。您可以使用您愿意允许的其他字符来扩充它。
event.target.value.match( /[^a-zA-Z ]/ ) // Array if value outside the range
第三,和其他评论一样,你限制了很多英语单词,例如Résumé
,所以这不一定是个好主意。但是,您的使用案例可能会有所不同。