wake-up-neo.net

jquery-Validator-Plugin mit Anzeige: keine Formularelemente

Ich benutze das Validator-Plugin gefunden hier , um ein Formular zu validieren.

Problem, das ich habe, ist, wenn ich das Formeleingabeelement mit folgendem Befehl versuche, schlägt die Überprüfung fehl:

<div style="display:none;"><input type="text" name="test" /></div>

Ich brauche das, weil ich andere UI-Control-Layer für die Eingabeelemente verwende und sie nicht sichtbar machen möchte.

Es funktioniert für Inline- und Blockelemente, aber ich muss es verborgen halten. Gibt es überhaupt etwas, um das zu umgehen?

Danke für jedes Feedback

Aktualisieren:

Ich überprüfe meistens Auswahlfelder mit Django (zB: {{form.select_option_element}})

So effektiv:

<div style="display:none;">
    {{form.select_option_element}}
</div>

... funktioniert nicht

Gleich nach dem Posten scheine ich es zu lösen mit:

<div style="visibility: hidden; height: 0;">
     {{form.select_option_element}}
</div>

Dann kann ich das Feld überprüfen.

20
user1597002

Aus dem 1.9.0 Änderungsprotokoll von jQuery Validate :

  • Fixed # 189 -: Verborgene Elemente werden jetzt standardmäßig ignoriert

Um es wieder einzuschalten, gehen Sie einfach wie folgt vor:

$(document).ready(function(){    
    $.validator.setDefaults({
        ignore: []
    });
});

Stellen Sie sicher, dass dies angezeigt wird before Sie rufen das tatsächliche Validierungs-Plugin in Ihrem Code auf.

Ich hoffe das hilft!

47
dSquared

Ich mag die Antwort von @dSquared, aber leider wird die 'ignore'-Eigenschaft für den Validator jedes Formulars auf der Seite zurückgesetzt. In einigen Fällen braucht es nicht.

Ich benutze diesen Weg:

$(document).ready(function () {

    var $form = $("#some-form");

    $form.validate().settings.ignore = []; // ! Say to validator dont ignore hidden-elements on concrete form.

    $('#button-send').click(function () {
        if ($form.valid()) { .. }
    });

    // !! apply plugin's initializers which will hide Origin elements (it can be CLEditor or Choosen plugins)
});
3
vladimirG

Haben Sie versucht, das style-Attribut dem Eingabeelement hinzuzufügen? Anstatt es mit einem div einzuwickeln, versuchen Sie:

<input type="text" name="test" value="" style="display: none;" />
1
rafiki_rafi

Es gibt zwei Dinge, die Sie tun können.

1) Sie können den Wert für dieses Eingabefeld wie den statischen Wert einstellen, der die Validierung nicht versagt

<div style="display:none;"><input type="text" name="test" value="default" /></div>

2) Wenn Sie diesen Wert in Ihrer Validierungsmethode negieren möchten.

Ich würde mich freuen, wenn Sie mehr Code zur Verfügung stellen könnten.

0
PRP

Ein anderes Formular zur Lösung dieses Problems besteht darin, den display: none in visibility: hidden zu ändern.

ZB: <input type="text" name="test" value="" style="visibility: hidden;" />

0
Caike Bispo