HTML文本输入仅允许字母数字输入和一些其他字符

时间:2017-08-08 07:54:51

标签: javascript jquery html regex html5

我需要使用以下字符验证文本输入: 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\.\,\-\à\è\é\ì\ò\ù]这样的字符(但显然我不能输入小写字符)。

有什么问题?有没有其他更好的方法来验证这种输入?ù

JSFiddle

EDIT1

我明白了原因。当我复制粘贴字符串时,组合@#被识别为键码118,即 v 字符:

enter image description here

0 个答案:

没有答案