我需要使用以下字符验证文本输入: google.maps.event.addListener(marker, 'click', function() {
// Show\hide radio-btns
document.getElementById("showall").style.display = 'none';
document.getElementById("compton").style.display = 'inline';
// Hide marker
this.setVisible(false); // maps API hide call
// or
markers[2].setVisible(false);
});
我的HTML代码是:
[\w\s\.\,\-\à\è\é\ì\ò\ù]
和用于验证的javascript代码(使用jquery)是:
<input type="text" id="customer_name" placeholder="Your name..." maxlength=100 />
如果我输入字符,此代码效果很好,但如果我尝试复制并粘贴其他特殊字符(例如$('#customer_name').on('keypress', function(e) {
var keyCode = e.keyCode || e.which;
// 13: enter, 8: backspace, 46: del, 37: left arrow, 39: right arrow
if(keyCode == 13 || keyCode == 8 || keyCode == 46 || keyCode == 37 || keyCode == 39) {
return;
}
// Validate input
else if (String.fromCharCode(keyCode).match(/[\w\s\.\,\-\à\è\é\ì\ò\ù]/)) {
return;
}
else e.preventDefault();
});
),则此代码会失败。
我还尝试用@#
替换原始正则表达式,但没有任何改变。但是,如果我删除小写字符(即[0-9A-Za-z_\s\.\,\-\à\è\é\ì\ò\ù]
),那么它甚至可以使用复制粘贴,从而拒绝像[0-9A-Z_\s\.\,\-\à\è\é\ì\ò\ù]
这样的字符(但显然我不能输入小写字符)。
有什么问题?有没有其他更好的方法来验证这种输入?ù
EDIT1
我明白了原因。当我复制粘贴字符串时,组合@#
被识别为键码118,即 v 字符: