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$/,“”);
});代码>