Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/435.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 在输入时更改输入值,而不影响更改侦听器?_Javascript - Fatal编程技术网

Javascript 在输入时更改输入值,而不影响更改侦听器?

Javascript 在输入时更改输入值,而不影响更改侦听器?,javascript,Javascript,我有一个文本输入。它有一个更改和一个输入侦听器。在input侦听器中,如果输入值为“delete”,则删除该值。change侦听器只会发出“Changed”警报 当前行为: 当我键入“删除”并停止编辑时,不会出现“更改”警报,因为比较基数也会更改 期望的行为: 我希望看到基于编辑开始时的值的“Changed.”警报,忽略在修改过程中所做的所有编程更改 最简单的方法是什么 Playgorund: 单击输入 删除内容 键入“删除” 查看如何删除文本 点击其他地方 查看“已更改”警报是如何显示的 v

我有一个文本输入。它有一个
更改
和一个
输入
侦听器。在
input
侦听器中,如果输入值为“delete”,则删除该值。
change
侦听器只会发出“Changed”警报

当前行为:

当我键入“删除”并停止编辑时,不会出现“更改”警报,因为比较基数也会更改

期望的行为:

我希望看到基于编辑开始时的值的“Changed.”警报,忽略在修改过程中所做的所有编程更改

最简单的方法是什么

Playgorund:

  • 单击输入
  • 删除内容
  • 键入“删除”
  • 查看如何删除文本
  • 点击其他地方
  • 查看“已更改”警报是如何显示的
  • var input=document.querySelector('input');
    input.addEventListener('change',function()){
    警报(“更改”);
    });
    addEventListener('input',function(){
    input.value=input.value.replace(/^delete$/,“”);
    });
    
    我当前的解决方案是添加一个属性,在每个
    焦点事件中存储初始值,并将其与
    模糊事件时的当前值进行比较

    var input=document.querySelector('input');
    input.addEventListener('focus',function(){
    this.setAttribute('data-value-on-focus',this.value);
    });
    input.addEventListener('blur',function(){
    if(this.getAttribute('data-value-on-focus')!==this.value)警报('Changed');
    });
    addEventListener('input',function(){
    this.value=this.value.replace(/^delete$/,“”);
    });