Wie jquery Verwenden.Validierung mit jquery.multiselect Dropdown?
Also die situation ist diese: versuchen Sie zum hinzufügen eines dropdown-box über der jquery.multiselect plugin auf einem Formular, dass die aktuellen Verwendungen der jquery.überprüfen plugin, dass andere Felder (text-input-Felder, einzelne Texteingabe, hat eine float
Wertebereich), dass alle derzeit validieren richtig.
Wenn ich versuche, fügen Sie Validierungsregeln hinzu, die ich einfach nicht gehen und jquery.überprüfen, um zu bestätigen meine multiselect dropdown löschen. Hier sind Ausschnitte von meinem code (alle davon ausgegangen, dass die erforderlichen plugins geladen werden - siehe unten für Versionen verwendet):
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>
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'
});
});
Versionen
Wenn es eine explizite/bekannte Problem mit der Kompatibilität zwischen den Versionen, dann kann ich aktualisieren, falls sich das Problem damit lösen, aber ich habe getestet mit den neuesten Versionen für meine Zwecke und es schien nicht zu lösen mein Problem.
jQuery: 1.4.4
jquery.überprüfen: 1.9.0
jquery.multiselect: 1.8
Und, wie immer, ich kann mehr Informationen liefern, wo es möglich/nötig.
Du musst angemeldet sein, um einen Kommentar abzugeben.
So scheint es, dass die Regeln ich war die Einrichtung für die multiselect-waren in der Tat wird an die wählen, jedoch, da der ursprüngliche select-box ist
:hidden
durchjquery.multiselect
,jquery.validate
standardmäßig ignoriert alle versteckten Eingänge.Die Lösung (die ist nicht von meinem eigenen - ein Mitarbeiter es gefunden), ist die Verwendung der
ignore
Einstellungen fürjquery.validate
. Was auch immer selector übergeben wird, mit derignore
Einstellung in ein jquery -.not()
, so dass die Lösung tatsächlich ist zu verwenden eine doppelte Verneinung hier:Puh!
Sieht für mich wie Ihr zwei Optionen wählen, tragen Sie einen Wert ein.
Versuchen Sie, eine option, an der Spitze mit einem Wert von nichts und ausgewählt:
Eine weitere mögliche Lösung ist die explizite Angabe der Elemente zu überprüfen:
Wird, überprüfen Sie die verborgenen wählen Sie als gut.
In der Tat, die situation, die ich nur gestoßen, es gab keine andere Möglichkeit, da wollte ich überprüfen, indem Sie ein Teil für ein multistep-Formular:
Hoffe es hilft jemand