【发布时间】:2021-12-17 14:56:42
【问题描述】:
我想通过正则表达式限制输入文本。在第一个示例中,我在 HTML 中使用属性 onkeyup = "lettersOnly(this)",如下所示:
<form>
<label for="username">Choose a Username:</label>
<input type="text" name="username" id="username" onkeyup="lettersOnly(this)">
</form>
<script>
function lettersOnly(input){
var regex = /[^a-z]/gi;
input.value = input.value.replace(regex, "");
}
</script>
它有效,但我了解到这是一种不好的做法。我找到了其他解决方案来避免这种情况,并在<script> 标签内设置someVariable.onkeyup。但是,我的目标是使用addEventListener ('keyup', lettersOnly, false) 找到另一种获得相同结果的方法。我针对这种特定情况进行了很多研究,但没有答案。可能吗?我尝试了以下方法:
<form>
<label for="username">Choose a Username:</label>
<input type="text" name="username" id="username">
<!--No more “onkeyup” attribute.-->
</form>
<script>
function lettersOnly(input){
var regex = /[^a-z]/gi;
input.value.addEventListener('keyup', lettersOnly(input){
input.value = input.value.replace(regex, "");
}, false)
}
</script>
不起作用。我的意图是避免在 html 中使用事件处理程序,而是使用 addEventListener。最后一个编码有什么问题?为什么不起作用?非常感谢您的耐心等待。
【问题讨论】:
-
我刚刚注意到在您的第二个代码块中,您正在向
input.value添加一个eventListener,这肯定不会起作用,并且您会收到一条错误消息,指出input.value.addEventListener is not a function。它应该应用于input元素。
标签: javascript dom-events addeventlistener keyup onkeyup