gpt4 book ai didi

javascript - 如何防止输入文本出现 "post accent"

转载 作者:搜寻专家 更新时间:2023-10-31 08:15:53 25 4
gpt4 key购买 nike

我相信这很简单,但在谷歌上搜索几个小时后我找不到任何答案(也许我无法在搜索中使用正确的词:-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/

关于javascript - 如何防止输入文本出现 "post accent",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36600555/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com