我从这个问题中借了一些代码(见回复4):
how do i block or restrict special characters from input fields with jquery?
然而,在使用代码时,看起来虽然它在您整齐排序时进行验证,但它不允许您编辑您输入的任何内容。
$('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;
}});
我有点困惑,我试图通过将按键更改为keyup来调整它,但这只会阻止验证工作。任何指针都会被慷慨地接受。
答案 0 :(得分:1)
这似乎是浏览器特定的问题。在Firefox中,keypress包括退格键和箭头键等元键,而Chrome则不包括。如果你稍微调整你的逻辑以更喜欢哪个超过charCode(我认为最好支持它)你最终得到这个
$('input').bind('keypress', function(event) {
var regex = new RegExp("^[a-zA-Z0-9]+$");
var code = event.charCode === 0 ? event.which : event.charCode;
var key = String.fromCharCode(code);
if (!regex.test(key) && code !== 8) {
// 8 is ascii code for backspace
event.preventDefault();
return false;
}
});
这个小提琴还会向控制台写入键入时在事件中传递的键和代码。 http://jsfiddle.net/Q2MWS/5/
答案 1 :(得分:0)
我认为event.preventDefault()阻止编辑输入的字符,如果它们与正则表达式不匹配。检查event.which / event.charCode是否有其他值,如退格,空格,小数点键等