2017-08-22 2 views
0

J'essaie d'ajouter la validation jQuery dans la liste déroulante select2. Cependant, il continue à provoquer l'exception javascript de "nodeName undefined", je ne suis pas sûr de ce qui s'est mal passé.Impossible de lire la propriété de nodeName non défini sur la validation jQuery avec select2

$(".field-validation-required").each(function() { 

    // output SELECT, if current html class is a select2 dropdown. 
    console.log(this.nodeName); 

    $(this).rules('add', { 
     required: true, 
     messages: { 
      required: "This field is required" 
     } 
    }); 
}); 

Mon menu déroulant select2 contient la classe « .field-validation obligatoire » et je suis en train d'appliquer une validation jQuery sur elle. Mais il semble que $ (this) provoque toujours l'erreur "Can not read property of nodeName non défini".

+0

nous Afficher le balisage HTML pertinent; Sinon, je ne peux pas dupliquer votre erreur. – Sparky

Répondre

1

Ma liste déroulante select2 contient la classe .field-validation-required et j'essaie d'appliquer une validation jQuery. Mais il semble $(this) provoque toujours cette erreur "Cannot read property of nodeName undefined".

Afficher le balisage HTML approprié; Sinon, je ne peux pas dupliquer votre erreur.


Est-ce que votre original select contiennent un name unique? Ceci est mandaté par le plugin et un name manquant ou en double peut être la cause première de votre message d'erreur.


est votre .field-validation-required classe sur l'élément select d'origine ou sur vos éléments Select2 dynamiquement créés? S'il s'agit de l'élément select, cela devrait fonctionner. Si c'est sur l'élément Select2, cela ne fonctionnera pas.

Vous ne pouvez appliquer jQuery Valider pour select, textarea, certains input et contenteditable éléments ... rien d'autre.

Ciblez l'élément original caché select au lieu de l'élément Select2. Ensuite, puisque le plugin ignorera tous les éléments cachés, vous devrez définir l'option ignore sur un sélecteur jQuery qui n'ignore pas votre élément caché select. Par exemple, ignore: [] dira au plugin de ne rien ignorer et de valider tous les éléments cachés.


Vous pouvez également appliquer la règle required à votre élément select d'origine par classe ou attribut HTML5. Vous devrez toujours définir l'option ignore comme décrit ci-dessus.

<select name="myselect" class="required" .... 

ou

<select name="myselect" required="required" .... 
+1

Ouais, j'ai finalement trouvé la cause première de cette exception parce que j'ai un div qui contient la classe ".field-validation-required" et le code essayait de valider cela, ce qui a provoqué l'exception. – zihaow