JQuery 验证代码不允许删除输入的文本
JQuery validation code will not allow deletion of entered text
我从这个问题中借用了一些代码(见回复4):
如何使用 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 来调整它,但这只会阻止验证工作。任何指示都会被慷慨地接受。
这似乎是浏览器特定的问题。在Firefox中,按键包括元键,如退格键和箭头键,而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/
我认为event.preventDefault()如果输入的字符与正则表达式不匹配,则会阻止编辑它们。检查 event.which/event.charCode 中的其他值,如退格键、空格、小数点键等
相关文章:
- 尝试在PHP中回显输入文本时出现未定义的索引错误
- 使用模拟按键在输入框中自动输入文本
- 如何添加类,同时开始在文本字段中输入文本
- JQuery使用相同的功能自动完成各种输入文本
- 如何设置输入文本框jquery的值
- 输入文本框为空时的阻止按钮asp.网络表单
- 基于单选框更新页眉,选中并选择输入文本
- 将输入文本与某个选项的值相匹配并自动选择
- 如何在 JavaScript 中创建输入文本框
- 如何使用纯Javascript观看输入文本框
- 需要使用javascript获取输入文本,然后将其添加到句子中
- php&js-将电子邮件添加到输入文本中
- 动态启用/禁用来自控制器的输入文本
- .val()不返回输入文本
- 从确认框中预填充输入文本框
- 如何使用JavaScript解析输入文本中给定的数据
- 添加/删除/更改输入文本的部分值
- 根据输入文本按元素排序,AngularJS
- 如何将(a*b)两个输入文本值相乘,并在javascript中随文本变化动态显示
- 如何从Tr重复的输入文本中获取值