更改输入的输入值,而不影响更改侦听器
Changing input value on input, without affecting change listener?
我有一个文本输入。它具有change
和input
侦听器。在input
侦听器中,如果输入的值为"delete",则删除该值。change
侦听器只是简单地提醒"Changed"。
当前行为:
当我键入"delete"并停止编辑时,没有"Changed."警报,因为比较基数也发生了更改。
期望行为:
我希望看到基于编辑开始时的值的"更改"警报,忽略修改过程中所做的所有程序更改。
做这件事最简单的方法是什么?
Playgorund:
- 单击输入
- 删除内容
- 键入"delete"
- 查看如何删除文本
- 单击其他位置
- 查看"Changed."警报是如何而不是显示的
var input = document.querySelector('input');
input.addEventListener('change', function() {
alert('Changed.');
});
input.addEventListener('input', function() {
input.value = input.value.replace(/^delete$/, '');
});
<input value="example" />
我当前的解决方案是在每个focus
事件中添加一个存储初始值的属性,并将其与blur
事件时的当前值进行比较。
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) alert('Changed.');
});
input.addEventListener('input', function() {
this.value = this.value.replace(/^delete$/, '');
});
<input value="example" />
相关文章:
- 为什么不't Javascript对我的输入值进行了一些重新检查
- 可以't让我的if语句处理js中的html表单输入
- 名称输入的索引
- 如何编写HTML输入的JS内联
- 要求输入在数据列表中
- 将输入字段中的文本提交到我的数据库,同时将其添加到我的列表中
- 递增/递减 jQuery 影响错误的输入
- 选择输入更改不会影响模型状态
- 似乎无法影响嵌套 setTimeout 中的输入元素属性
- Javascript onblur影响从文本框输入到iframe
- 更改输入的输入值,而不影响更改侦听器
- 防止在不影响文本输入的情况下,空格键在向下滚动时出现默认情况
- 如何影响原有输入框的变化
- Ng-animate影响输入元素,虽然它不应该'
- 如何使两个文本输入相互影响
- 防止按钮对html输入和按钮标签的影响
- 如何在AngularJS中设置输入的值,而不影响其ngModel
- 如何修改占位符颜色,而不影响输入文本的颜色
- onKeyUp,一个输入字段通过jQuery影响另一个
- jquery:用jquery更改输入val;t影响输入拦截器