事件冒泡和onblur事件(Event bubbling and the onblur event)

2019-07-21 02:45发布

我正在写一个表单验证脚本,并想验证某一领域时,其onblur事件触发。 我也想利用事件冒泡,所以我没有一个onblur事件附加到每个单独的表单字段。 不幸的是,onblur事件不会冒泡。 如果任何人都可以产生同样的效果的一流解决方案的了解只是想知道。

Answer 1:

PPK具有用于此的技术,包括用于IE必要的变通方法: http://www.quirksmode.org/blog/archives/2008/04/delegating_the.html



Answer 2:

你将需要使用事件捕捉(而不是鼓泡)对符合标准的浏览器和focusout为IE:

if (myForm.addEventListener) {
    // Standards browsers can use event Capturing. NOTE: capturing 
    // is triggered by virtue of setting the last parameter to true
    myForm.addEventListener('blur', validationFunction, true);
}
else {
    // IE can use its proprietary focusout event, which 
    // bubbles in the way you wish blur to:
    myForm.onfocusout = validationFunction;
}

// And of course detect the element that blurred in your handler:
function validationFunction(e) {
    var target = e ? e.target : window.event.srcElement;

    // ...
}

见http://www.quirksmode.org/blog/archives/2008/04/delegating_the.html了有趣的细节



Answer 3:

使用“ 事件的内容 ”的事件,因为它有泡沫了effect..thanks。



Answer 4:

使用具有冒泡onblur事件,然后你可以使用的addEventListener()和将useCapture参数设置为false。 像这样:

yourFormInput.addEventListener('blur', yourFunction, false);

火狐51及以下不支持onfocusout事件。 所以,不要使用onfocusout代替onblur事件。



Answer 5:

AA,你可以简单地添加窗体上的onblur事件,并会调用验证每次你在任何里面的元素改变焦点



文章来源: Event bubbling and the onblur event