Comment faire pour Utiliser jquery.Valider avec jquery.multiselect Déroulante?
Donc, la situation est ceci: en essayant d'ajouter une zone de liste déroulante à l'aide de la jquery.multiselect plugin sur un formulaire que les utilisations actuelles de la jquery.valider plugin qui a d'autres champs (champs de saisie de texte, seule la saisie de texte qui a un float
plage de valeurs) que toutes les valider correctement.
Quand je tente d'ajouter des règles de validation, je ne peut tout simplement pas obtenir jquery.valider pour valider mon multiselect déroulante que ce soit. Voici des extraits de mon code (suppose que tous les plugins nécessaires sont chargés - voir ci-dessous pour les versions utilisées):
Le code HTML:
<form action="some/action" id="myForm" method="POST">
Input 1: <input type="text" value="" name="input1" maxlength="200" id="input1"><br/>
Input 2: <input type="text" value="" name="input2" maxlength="100" id="input2"><br/>
Input 3: <input type="text" value="" name="input3" maxlength="50" id="input3"><br/>
Select: <select class="someSelect" name="mySelect" id="mySelect" multiple="multiple">
<option value="some_val1">Some Value</option>
<option value="some_val2">Some Other Value</option>
</select>
<input type="submit" value="Submit" />
</form>
Le Javascript:
$(document).ready(function() {
$('#mySelect').multiselect({
noneSelectedText: 'Select Something (required)',
selectedList: 3,
classes: 'my-select'
});
$.validator.addMethod("needsSelection", function(value, element) {
return $(element).multiselect("getChecked").length > 0;
});
$.validator.addMethod("isPercent", function(value, element) {
return parseFloat(value) >= 0 && parseFloat(value) <= 100;
});
$.validator.messages.needsSelection = 'You gotta pick something.';
$.validator.messages.isPercent = 'Must be between 0% and 100%';
$('#myForm').validate({
rules: {
mySelect: "required needsSelection",
input1: "required isPercent",
input2: "required",
input3: "required"
},
errorClass: 'invalid'
});
});
Versions
Si il y a une explicite/problème connu avec la compatibilité entre les versions, alors je peut mettre à jour si cela résout le problème, mais je l'ai testé en utilisant les nouvelles versions pour mes besoins et il ne semble pas à résoudre mon problème.
jQuery: 1.4.4
jquery.valider: 1.9.0
jquery.multiselect: 1.8
Et, comme toujours, je peux fournir plus d'informations si possible/nécessaire.
OriginalL'auteur Mattygabe | 2011-12-16
Vous devez vous connecter pour publier un commentaire.
Il semble donc que les règles que j'ai a été mise en place pour la sélection multiple ont été, en effet être attachés à sélectionner, cependant, depuis la boîte de sélection est
:hidden
parjquery.multiselect
,jquery.validate
par défaut ignore tout caché entrées.La solution (qui n'est pas de mon propre - un collègue de travail m'a trouvé) est d'utiliser la
ignore
paramètres pourjquery.validate
. Quel que soit le sélecteur est transmis avec leignore
paramètre est mis dans un jquery.not()
, donc la solution est effectivement d'utiliser un double négatif ici:Ouf!
Ses pourquoi j'ai toujours essayer de poster mes questions et les solutions à eux - heureux de vous avoir aidé! 🙂
Vous m'avez aidé, trois! Comme vous l'avez dit, "Ouf"
Merci j'ai utilisé ta solution, mais au cas où quelqu'un d'autre a des problèmes, j'ai dû enlever le "nécessaire" option à partir de la liste de sélection de la règle, parce que si je n'ai "tout décocher", puis sélectionner un seul élément, alors il n'était pas à valider et j'ai dû choisir 2 éléments, puis décochez l'option.
Ouais, ça marche pour moi 🙂
OriginalL'auteur Mattygabe
Me semble que vos deux options comportent une valeur.
Essayez d'ajouter une option au sommet, avec une valeur de rien et sélectionné:
OriginalL'auteur Koder
Une autre solution possible est de spécifier explicitement les éléments à valider:
Qui permettra de valider le caché sélectionnez.
En fait, la situation que je viens de rencontré il n'y a pas d'autre moyen car je voulais valider par une partie d'un formulaire en plusieurs étapes:
Espère que cela aide quelqu'un
OriginalL'auteur parliament