解决方法
我个人觉得修改标准的交互模式有点烦人,但如果你必须过滤键盘输入,你可以通过截取按键事件并取消你不想要的事件来做到这一点:
var allowed = /[a-zA-Z0-9]/; // etc. window.onload = function () { var input = document.getElementById("test"); input.onkeypress = function () { // Cross-browser var evt = arguments[0] || event; var char = String.fromCharCode(evt.which || evt.keyCode); // Is the key allowed? if (!allowed.test(char)) { // Cancel the original event evt.cancelBubble = true; return false; } } };
它使用jQuery更简洁,更漂亮:
var allowed = /[a-zA-Z0-9]/; // etc. $(function () { var input = document.getElementById("test"); $("#input").keypress(function (e) { // Is the key allowed? if (!allowed.test(String.fromCharCode(e.keyCode || e.which))) { // Cancel the original event e.preventDefault(); e.stopPropagation(); } }); });