2009-10-06 7 views
3

J'écris un script de validation de formulaire et je souhaite valider un champ donné lorsque son événement onblur se déclenche. Je voudrais également utiliser le bouillonnement d'événements afin que je ne doive pas attacher un événement onblur à chaque champ de formulaire individuel. Malheureusement, l'événement onblur ne fait pas de bulles. Je me demande simplement si quelqu'un connaît une solution élégante qui peut produire le même effet.Bulbillage d'événements et événement onblur

+0

chaque champ de formulaire a une fonction de validation différente ou est-ce la même chose pour tous les champs? – Peter

+0

ils utilisent tous la même fonction de rappel. la fonction de rappel recherche certaines classes sur l'élément html qui lui indiquent comment valider (comme "required" ou "integer") – spudly

Répondre

-2

aa, vous pouvez simplement ajouter l'événement onblur sur la forme, et appellera la validation à chaque fois que vous changez de mise au point sur l'un des éléments à l'intérieur

+1

êtes-vous sûr? Je n'aurais pas pensé que la forme flouterait du tout, d'autant plus qu'elle ne peut pas être mise au point en premier lieu. – nickf

+1

Comme je l'ai dit dans ma question, l'événement onblur ne fait pas de bulles. S'il vous plaît, lisez la question complètement avant de cracher une réponse. – spudly

8

Vous allez avoir besoin d'utiliser capture d'événements (par opposition à un barbotage) pour les navigateurs conformes aux normes et focusout pour 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; 

    // ... 
} 

Voir http://www.quirksmode.org/blog/archives/2008/04/delegating_the.html pour la jouei cy détails

2

utilisation événement 'focusOut' comme il a bouillonner effect..thanks.

0

Pour utiliser bouillonnant avec l'événement onblur, vous pouvez ensuite utiliser addEventListener() et définissez le paramètre useCapture à faux. Comme ceci:

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

Firefox 51 et ci-dessous ne prennent pas en charge l'événement onfocusout. N'utilisez donc pas onfocusout au lieu de onblur.

Questions connexes