Javascript 输入开头的空格不能与addEventListener一起使用
我一直在试图弄明白为什么这不能与事件侦听器一起工作。这个脚本防止输入开头出现空白,因此我需要避免使用 这是oninput=“validate(this)”并将此脚本转换为使用事件侦听器,而我现在一直在尝试弄清楚这一点,但我的代码中没有运气Javascript 输入开头的空格不能与addEventListener一起使用,javascript,Javascript,我一直在试图弄明白为什么这不能与事件侦听器一起工作。这个脚本防止输入开头出现空白,因此我需要避免使用 这是oninput=“validate(this)”并将此脚本转换为使用事件侦听器,而我现在一直在尝试弄清楚这一点,但我的代码中没有运气 功能验证(输入){ if(/^\s/.test(input.value)) input.value=''; } 您可以使用输入事件,甚至键控事件。每次输入的文本更改时,它都会激发。据我所知,input在IE9+和其他现代浏览器中受支持,而keyup在所有浏览
功能验证(输入){
if(/^\s/.test(input.value))
input.value='';
}
您可以使用输入
事件,甚至键控
事件。每次输入的文本更改时,它都会激发。据我所知,input
在IE9+和其他现代浏览器中受支持,而keyup
在所有浏览器中都受支持
带有输入事件的示例:
var input = document.getElementById("noWhiteSpaceAtTheStart");
input.addEventListener('input', function() {
if(/^\s/.test(input.value)) {
input.value = '';
}
});
例如,对于keyup
事件,这比后一种解决方案更难看,因为用户可以看到正在输入和删除的空间:
var input = document.getElementById("test");
input.addEventListener('keyup', function() {
if(/^\s/.test(input.value))
input.value = '';
});
使用JavaScript更改的输入必须手动触发,使用jQuery可以通过以下方式轻松完成(可能不处理本机JavaScript事件,尚未测试):
不过,使用纯JavaScript来实现这一点要复杂一些。如果需要的话,这里有一个方法来帮助你
这是一个为您工作的代码。以上代码对我来说非常好。您可以附加一个断点来检查调用函数时是否出现问题
有几种更好的方法可以实现这一点:
你可以用
- javascript在该输入文本上添加EventListner,以确保代码正常工作
- 使用类似onKeyUp的函数
试试这个:
HTML:
在chrome上测试,它可以工作。你是说你不能使用oninput吗?它起作用了吗?这是个人的。我之所以选择这种方法而不是那种方法是有原因的。你知道解决这个问题的方法吗?贴了一个答案,试试看,让我知道他只是不想用现在的方式来做。如果你阅读评论,没有问题。@Alec我没有阅读评论,因为几分钟前刚刚发布了评论。是的,在旧的IE版本中,我真的认为这不管用。所以最好使用AddEventListener。非常感谢你的帮助Alec我真的很感谢你给我们的教训和建议,因为你我今天对这个话题有了更好的理解,谢谢。
var input = $("#input");
input.val("I am going through changes mom");
input.trigger("change");
<input id='noWhiteSpaceAtTheStart' type='text'/>
function validate(){
var val = event.target.value;
if(/^\s/.test(val))
event.target.value = '';
}
document.getElementById("noWhiteSpaceAtTheStart").addEventListener("input", validate);