gpt4 book ai didi

javascript - 正则表达式验证不允许 home、end、箭头键工作

转载 作者:行者123 更新时间:2023-11-30 10:33:24 24 4
gpt4 key购买 nike

问题:我有一个 html 文本输入,它在 onpressonkeydownonkeyup 事件中使用以下代码:

this.value = this.value.replace(/[^a-zA-Z0-9]/, '')

这适用于字母数字验证,但它不允许使用主页键、结束键或箭头键放置光标;只能使用退格键移动光标。老实说,这在某些情况下是可取的行为,但在其他情况下则不然。

为什么在 Firefox 和 Chrome 中会出现这种行为(尚未在 IE 中测试过)?我的问题是它与将光标放在末尾的 this.value = 部分有关,因为我从未见过箭头键等的正则表达式。

最佳答案

由于您在每次击键时替换全部内容(实际上,每次击键 3 次),插入符号将放在替换后的末尾。

我建议另一种方法:仅在验证未通过时才替换字段的内容:

<input id="uname" type="text">
var f = document.getElementById('uname');
f.addEventListener('keyup', function(e){
var regex = /[^a-zA-Z0-9]/;
if(regex.test(this.value)) {
this.value = this.value.replace(regex, '')
}
});

上面的 JavaScript 片段应该添加到 <script> 中在 </body> 之前标记(或包装在 document.ready/DOMContentLoaded/window.onload 处理程序中以确保该字段在运行时已经存在)。

Demo

关于javascript - 正则表达式验证不允许 home、end、箭头键工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15510478/

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