Ich habe ein Formular mit einer Reihe von Textfeldern, die standardmäßig deaktiviert sind, dann aktiviert durch ein Kontrollkästchen neben jedem.Verwendung hängt mit dem jQuery Validierungs-Plugin
Wenn aktiviert, müssen die Werte in diesen Textfeldern eine gültige Zahl sein, aber wenn sie deaktiviert sind, benötigen sie (natürlich) keinen Wert. Ich verwende das jQuery Validation-Plugin, um diese Validierung durchzuführen, aber es scheint nicht zu tun, was ich erwarte.
Wenn ich das Kontrollkästchen anklicke und das Textfeld deaktiviere, bekomme ich immer noch den ungültigen Feldfehler trotz der depends
Klausel, die ich zu den Regeln hinzugefügt habe (siehe Code unten). Seltsamerweise passiert, dass die Fehlermeldung, die für einen Bruchteil einer Sekunde angezeigt wird, dann verschwindet. Hier
ist eine Probe der Liste der Kontrollkästchen & Textfelder:
<ul id="ItemList">
<li>
<label for="OneSelected">One</label><input id="OneSelected" name="OneSelected" type="checkbox" value="true" />
<input name="OneSelected" type="hidden" value="false" />
<input disabled="disabled" id="OneValue" name="OneValue" type="text" />
</li>
<li>
<label for="TwoSelected">Two</label><input id="TwoSelected" name="TwoSelected" type="checkbox" value="true" />
<input name="TwoSelected" type="hidden" value="false" />
<input disabled="disabled" id="TwoValue" name="TwoValue" type="text" />
</li>
</ul>
Und hier ist die jQuery-Code Ich bin mit
//Wire up the click event on the checkbox
jQuery('#ItemList :checkbox').click(function(event) {
var textBox = jQuery(this).siblings(':text');
textBox.valid();
if (!jQuery(this).attr("checked")) {
textBox.attr('disabled', 'disabled');
textBox.val('');
} else {
textBox.removeAttr('disabled');
textBox[0].focus();
}
});
//Add the rules to each textbox
jQuery('#ItemList :text').each(function(e) {
jQuery(this).rules('add', {
required: {
depends: function(element) {
return jQuery(element).siblings(':checkbox').attr('checked');
}
},
number: {
depends: function(element) {
return jQuery(element).siblings(':checkbox').attr('checked');
}
}
});
});
Ignorieren Sie die versteckten Feld in jedem li
es ist da, weil Ich benutze asp.net MVC Html.Checkbox
Methode.
Ich kommentieren, anstatt zu antworten, weil ich das Validierungs-Plugin nie benutzt habe. Haben Sie versucht, textBox.validate() in den wahren Teil der if-Anweisung zu setzen, der nach einem aktivierten Kontrollkästchen sucht? – cLFlaVA
Leider hat es das nicht gemacht –