Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/421.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 输入开头的空格不能与addEventListener一起使用_Javascript - Fatal编程技术网

Javascript 输入开头的空格不能与addEventListener一起使用

Javascript 输入开头的空格不能与addEventListener一起使用,javascript,Javascript,我一直在试图弄明白为什么这不能与事件侦听器一起工作。这个脚本防止输入开头出现空白,因此我需要避免使用 这是oninput=“validate(this)”并将此脚本转换为使用事件侦听器,而我现在一直在尝试弄清楚这一点,但我的代码中没有运气 功能验证(输入){ if(/^\s/.test(input.value)) input.value=''; } 您可以使用输入事件,甚至键控事件。每次输入的文本更改时,它都会激发。据我所知,input在IE9+和其他现代浏览器中受支持,而keyup在所有浏览

我一直在试图弄明白为什么这不能与事件侦听器一起工作。这个脚本防止输入开头出现空白,因此我需要避免使用

这是oninput=“validate(this)”并将此脚本转换为使用事件侦听器,而我现在一直在尝试弄清楚这一点,但我的代码中没有运气

功能验证(输入){
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);