Jquery允许字母数字字符和非文本键按下

我有一个文本框,用户应该只输入字母数字字符,并且应该允许非空格键按下,如退格键,箭头键等。 此外,它还适用于所有主流浏览器(如Mozilla Firefox)。

我尝试过几个例子,只允许我输入字母数字字符,但退格不适用于Mozilla Firefox中的以下示例。

$('input').bind('keypress', function (event) { var regex = new RegExp("^[a-zA-Z0-9]+$"); var key = String.fromCharCode(!event.charCode ? event.which : event.charCode); if (!regex.test(key)) { event.preventDefault(); return false; } }); 

您可以添加[\b]以匹配并允许退格。

码:

 var regex = new RegExp("^[a-zA-Z0-9\b]+$"); 

演示: http : //jsfiddle.net/M3bvN/

UPDATE

您可以检查按下的键是否在允许的键列表(箭头,home,del,canc)中,而不是扩展正则表达式,如果是,则跳过validation。

这不会阻止用户复制/粘贴不允许的字符。 因此,也要在blur事件中执行validation控制(并始终在服务器端)。

码:

 var keyCode = event.keyCode || event.which // Don't validate the input if below arrow, delete and backspace keys were pressed if (keyCode == 8 || (keyCode >= 35 && keyCode <= 40)) { // Left / Up / Right / Down Arrow, Backspace, Delete keys return; } 

演示: http : //jsfiddle.net/M3bvN/3/

我正在研究这个问题,这就是我想出的:

 var input = $('input[name="whatever"]'); input.bind('keypress', function(e) { if ((e.which < 65 || e.which > 122) && (e.which < 48 || e.which > 57)) { e.preventDefault(); } }); 

它只允许数字和字母,包括大写和小写。 请注意,它也不允许空格键(这是我的应用程序所需的)。

 function lettersOnly(evt) { evt = (evt) ? evt : event; var charCode = (evt.charCode) ? evt.charCode : ((evt.keyCode) ? evt.keyCode : ((evt.which) ? evt.which : 0)); if (charCode == 8 || charCode == 46 || charCode == 37 || charCode == 39) { return true; } else if (charCode > 31 && (charCode < 65 || charCode > 90) && (charCode < 97 || charCode > 122)) { // alert("Enter letters only."); return false; } return true; } 
 $('.alphanumeric').bind('keypress', function (e) { var specialKeys = new Array(); specialKeys.push(8); //Backspace specialKeys.push(9); //Tab specialKeys.push(46); //Delete specialKeys.push(36); //Home specialKeys.push(35); //End specialKeys.push(37); //Left specialKeys.push(39); //Right var keyCode = e.keyCode == 0 ? e.charCode : e.keyCode; var ret = ((keyCode >= 48 && keyCode <= 57) || (keyCode >= 65 && keyCode <= 90) || (keyCode >= 97 && keyCode <= 122) || (specialKeys.indexOf(e.keyCode) != -1 && e.charCode != e.keyCode)); return ret; }); 

这段代码也将火狐