想让网站所有input都不能输入特殊字符,因为网站有多处都有input输入框,希望能统一定义input能都不能输入特殊字符,不想用onkeyup一个个去定义修改所有的input,一个个改没办法,量太大了,谁能帮帮我,感谢,应该用js可以,不过我找过js,也要写入ID什么的才能定义,能统一写一个,网站现在是没有统一的名称
想让网站所有input都不能输入特殊字符,因为网站有多处都有input输入框,希望能统一定义input能都不能输入特殊字符,不想用onkeyup一个个去定义修改所有的input,一个个改没办法,量太大了,谁能帮帮我,感谢,应该用js可以,不过我找过js,也要写入ID什么的才能定义,能统一写一个,网站现在是没有统一的名称
原生js吗?
特殊字符太多了,建议可以想想你的input里都允许输入什么字符。
然后写一个公共js文件在body标签之后引入。
这个文件中利用
const inputs = document.getElementsByTagName('input')
for (let i = 0; i < inputs.length; i++) {
// 为每个input标签都注册失去焦点的事件
inputs[i].oninput = inputVal
}
function inputVal () {
if (this.value不是你想要的字符) { // 可以用正则判断,也可以找到特殊字符的那些keyCode
// 处理非法字符的语句
// 利用this可以指向触发事件的那个input
}
}
这样就可以实现进入每个页面都使所有input标签生效并处理输入非法内容了,如果你觉得input
事件触发太激烈,可以用change
事件
这样写既不用在input上写id,也不用你一个一个加,写在公共文件中每个页面都引入就行
document.querySelectorAll("input").forEach(el => {
el.addEventListener("keydown",e => {
if(/[^a-zA-Z0-9]/.test(e.key)){
// 输入了非数字和字母
el.blur();
console.log(e.key, "非法")
} else {
console.log(e.key)
}
})
})
每进入一个页面在所有 DOM 加载完成后执行一遍这个方法。
13 回答12.8k 阅读
7 回答2k 阅读
3 回答1.1k 阅读✓ 已解决
2 回答1.2k 阅读✓ 已解决
2 回答879 阅读✓ 已解决
6 回答928 阅读✓ 已解决
4 回答991 阅读✓ 已解决
如果觉得
input
太多的话,不妨监听在document
上