Die Verwendung hängt davon ab, mit dem jQuery-Validation plugin

Ich habe ein Formular mit ein paar Textfeldern, die sind standardmäßig deaktiviert, und wieder aktiviert werden durch Verwendung einer checkbox neben jedem.

Wenn aktiviert, werden die Werte in diese Textfelder sind erforderlich, um eine gültige Nummer, aber wenn es deaktiviert ist, müssen Sie nicht einen Wert (offensichtlich). Ich bin mit dem jQuery-Validation-plugin zu tun, mit dieser überprüfung, aber es scheint nicht zu tun, was ich erwarte.

Wenn ich klicken Sie auf das Kontrollkästchen, und deaktivieren Sie die textbox, ich bekomme immer noch den Fehler ungültiges Feld trotz der depends Klausel, die ich Hinzugefügt habe, um die Regeln (siehe code unten). Seltsam, was tatsächlich passiert ist, dass die Fehlermeldung zeigt für einen Bruchteil einer Sekunde geht dann Weg.

Hier ist ein Beispiel, die Liste von Checkboxen & 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 der jQuery code, den ich verwende

//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 die hidden-Feld in jedes li es da ist, denn ich bin mit asp.net MVC ist Html.Checkbox Methode.

  • Ich bin kommentieren statt zu Antworten, weil ich habe noch nie verwendet die Validierung plugin. Haben Sie versucht, indem Sie das Textfeld ein.validate() innerhalb der true-Teil der if-Anweisung, die prüft, ob ein aufgegebenes Feld?
  • Leider trifft es nicht tun
InformationsquelleAutor Glenn Slaven | 2008-12-19
Schreibe einen Kommentar