Бублинг событий и событие onblur - PullRequest
4 голосов
/ 06 октября 2009

Я пишу сценарий проверки формы и хотел бы проверить данное поле при возникновении события onblur. Я также хотел бы использовать всплывающее окно событий, поэтому мне не нужно прикреплять событие onblur к каждому отдельному полю формы. К сожалению, событие onblur не всплывает. Просто интересно, если кто-нибудь знает элегантное решение, которое может дать тот же эффект.

Ответы [ 5 ]

9 голосов
/ 06 октября 2009

Вам потребуется использовать захват событий (в отличие от всплывающих окон) для совместимых со стандартами браузеров и 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 для сочных деталей

4 голосов
/ 23 октября 2012

используйте событие ' Focusout ', поскольку оно имеет эффект Bubble up..thanks.

2 голосов
/ 06 октября 2009

ppk имеет метод для этого, включая необходимые обходные пути для IE: http://www.quirksmode.org/blog/archives/2008/04/delegating_the.html

0 голосов
/ 09 марта 2017

Чтобы использовать всплытие с событием onblur, затем вы можете использовать addEventListener () и установить для параметра useCapture значение false . Как это:

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

Firefox 51 и ниже не поддерживает событие onfocusout. Поэтому не используйте onfocusout вместо onblur события.

0 голосов
/ 06 октября 2009

аа, вы можете просто добавить событие onblur в форму и вызывать проверку каждый раз, когда вы меняете фокус на любом из элементов внутри нее

...