Event bubbling and the onblur event

夙愿已清 提交于 2019-12-03 21:23:41

问题


I'm writing a form validation script and would like to validate a given field when its onblur event fires. I would also like to use event bubbling so i don't have to attach an onblur event to each individual form field. Unfortunately, the onblur event doesn't bubble. Just wondering if anyone knows of an elegant solution that can produce the same effect.


回答1:


ppk has a technique for this, including the necessary workarounds for IE: http://www.quirksmode.org/blog/archives/2008/04/delegating_the.html




回答2:


You're going to need to use event capturing (as opposed to bubbling) for standards-compliant browsers and focusout for 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;

    // ...
}

See http://www.quirksmode.org/blog/archives/2008/04/delegating_the.html for the juicy details




回答3:


use 'Focusout' event as it has Bubble up effect..thanks.




回答4:


To use bubbling with onblur event, Then you can use addEventListener() and set the useCapture parameter to false. Like this:

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

Firefox 51 and below do not support the onfocusout event. So don't use onfocusout instead of onblur event.




回答5:


aa, you can simply add the onblur event on the form, and will call the validation every time you change focus on any of the elements inside it



来源:https://stackoverflow.com/questions/1525718/event-bubbling-and-the-onblur-event

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!