pen*_*ake 16 javascript onblur dom-events
基本上我需要检查'blur'事件的文本框中是否更改了值,这样如果值没有改变,我想取消模糊事件.
如果可以检查它,用户是否在输入HTML元素的blur事件上更改了值?
谢谢,
Pek*_*ica 26
我不认为有一种本地方式可以做到这一点.我要做的是,向focus事件添加一个函数,将当前值保存到附加到元素(element.oldValue = element.value)的变量中.你可以检查那个值onBLur.
您无法取消模糊事件,您需要在计时器中重新聚焦。您可以设置一个变量 onfocus 或设置一个hasChanged变量在 change 事件上。模糊事件在更改事件之后触发(不幸的是,对于这种情况),否则您可以在 onchange 事件中重置计时器。
我会采取类似的方法:
(function () {
var hasChanged;
var element = document.getElementById("myInputElement");
element.onchange = function () { hasChanged = true; }
element.onblur = function () {
if (hasChanged) {
alert("You need to change the value");
// blur event can't actually be cancelled so refocus using a timer
window.setTimeout(function () { element.focus(); }, 0);
}
hasChanged = false;
}
})();
Run Code Online (Sandbox Code Playgroud)
在onblur事件中,您可以将与value进行比较,defaultValue以确定是否发生了更改:
<input onblur="if(this.value!=this.defaultValue){alert('changed');}">
Run Code Online (Sandbox Code Playgroud)
在defaultValue将包含初始的对象的值,而value将包含当前的对象的值的变化已作出之后。
参考文献:
为什么不在输入元素上维护一个自定义标志呢?
\n\ninput.addEventListener(\'change\', () => input.hasChanged = true);\ninput.addEventListener(\'blur\', () =>\xc2\xa0\n{\n if (!input.hasChanged) { return; }\n input.hasChanged = false;\n // Do your stuff\n});\nRun Code Online (Sandbox Code Playgroud)\n\n\n
| 归档时间: |
|
| 查看次数: |
24611 次 |
| 最近记录: |