如何防止“;后置重音“;在输入文本中
how to prevent "post accent" in input text
我相信这是一个简单的问题,但在谷歌上搜索了几个小时后我找不到任何答案(也许我无法在搜索中使用正确的单词:-p)
我有一个javascript方法,可以防止用户用数字以外的其他字符填充文本框,正如下面的代码所示,它用于KeyDown事件:
function checkNumberInput(e) {
// Allow: backspace, delete, tab, escape, enter and .
if ($.inArray(e.keyCode, [46, 8, 9, 27, 13, 110]) !== -1 ||
// Allow: Ctrl+A, Command+A
(e.keyCode == 65 && (e.ctrlKey === true || e.metaKey === true)) ||
// Allow: home, end, left, right, down, up
(e.keyCode >= 35 && e.keyCode <= 40)) {
// let it happen, don't do anything
return;
}
// Ensure that it is a number and stop the keypress
if ((e.shiftKey || (e.keyCode < 48 || e.keyCode > 57)) && (e.keyCode < 96 || e.keyCode > 105)) {
e.preventDefault();
}
}
问题是,如果用户键入"等待"第二个键的重音字符(如~´`^),则当紧接着键入数字时,它会出现在文本框中。
例如:
a) types 1 => [1________]
b) types ~ => [1________]
c) types 3 => [1~3______]
我该如何防止这种情况发生?提前谢谢。
您的意思是'
和a
转换为а́
吗?这是系统内置的,你不能改变它
你能做的就是在那之后检查输入。这样你也可以防止用鼠标粘贴:
$('input').on('keydown', checkNumberInput).on('blur focus', function(){
var val = $('input').val();
// now remove everything that is not allowed
val = val.replace(/[^0-9.]+/g, '');
$('input').val(val);
})
(确切的实现显然并不完美,只是为了说明正在发生的事情)
https://jsfiddle.net/5afwdhzx/
关于真正的即时修复-给这个闭包取一个名字,并在keyDown函数中以短延迟调用它,就像@haroldo上面说的那样。
https://jsfiddle.net/5afwdhzx/1/
相关文章:
- 尝试在PHP中回显输入文本时出现未定义的索引错误
- 使用模拟按键在输入框中自动输入文本
- 如何添加类,同时开始在文本字段中输入文本
- JQuery使用相同的功能自动完成各种输入文本
- 如何设置输入文本框jquery的值
- 输入文本框为空时的阻止按钮asp.网络表单
- 基于单选框更新页眉,选中并选择输入文本
- 将输入文本与某个选项的值相匹配并自动选择
- 如何在 JavaScript 中创建输入文本框
- 如何使用纯Javascript观看输入文本框
- 需要使用javascript获取输入文本,然后将其添加到句子中
- php&js-将电子邮件添加到输入文本中
- 动态启用/禁用来自控制器的输入文本
- .val()不返回输入文本
- 从确认框中预填充输入文本框
- 如何使用JavaScript解析输入文本中给定的数据
- 添加/删除/更改输入文本的部分值
- 根据输入文本按元素排序,AngularJS
- 如何将(a*b)两个输入文本值相乘,并在javascript中随文本变化动态显示
- 如何从Tr重复的输入文本中获取值