jQuery-Validierung und Platzhalter-Konflikt

Bin ich mit dem jQuery-Validation-plugin zur Validierung eines Formulars auf meiner Website.

http://docs.jquery.com/Plugins/Validation

Ich bin auch mit dem folgenden code Platzhalter-Unterstützung für Browser, die nicht unterstützen HTML5 placeholder="" Attribut.

//To detect native support for the HTML5 placeholder attribute
var fakeInput = document.createElement("input"),
    placeHolderSupport = ("placeholder" in fakeInput);

//Applies placeholder attribute behavior in web browsers that don't support it
if (!placeHolderSupport) {

    $('[placeholder]').focus(function() {
        var input = $(this);
        if (input.val() == input.attr('placeholder')) {
            input.val('');
            input.removeClass('placeholder');
        }
    }).blur(function() {
        var input = $(this);
        if (input.val() == '') {
            input.addClass('placeholder');
            input.val(input.attr('placeholder'));
        }
    }).blur().parents('form').submit(function() {
        $(this).find('[placeholder]').each(function() { //line 20
            var input = $(this);
            if (input.val() == input.attr('placeholder')) {
                input.val('');
            }
        });
    });
}

Wenn ich meine form, die folgenden Dinge passieren:

In Browsern, die Unterstützung der placeholder Attribut, das validate() Funktion ausgelöst und alles funktioniert wie es soll.

In Browsern, die keine Unterstützung für die placeholder Attribut, Zeilen 20-25 deaktivieren Sie alle "Platzhalter" und dann die validate() Funktion ausgelöst. Wenn keine Fehler vorhanden sind, wird die Seite legt und alles funktioniert wie es soll.

In nicht unterstützten Browsern, im Falle, daß Fehler vorhanden sind, werden die entsprechenden Felder angewendet class="error" wie gewohnt-aber der Platzhalter-text kommt nicht zurück, bis die blur() Ereignis auf einen bestimmten Bereich. Dies führt dazu, dass diese Felder leer lassen -- und da gibt es keine Etikette (nur die placeholder Attribut) Benutzer sind Links zu erraten, was jedes leere Feld enthalten soll, bis der blur() Ereignis passiert.

Das andere problem, dass nicht unterstützte Browser haben, ist, dass seit der Platzhalter fix ändert die value Attribut zur Anzeige der Platzhalter, Felder sind als erforderlich markiert Gültigkeitsprüfung wenn Sie zu scheitern.

Es scheint, gibt es keine einfache Möglichkeit, verwenden der Validation-plugin mit dem Platzhalter-support-code.

Ich bin auf der Suche, um entweder ändern Sie die Platzhalter support-code oder fügen Sie ein submitHandler: {} Funktion, die als parameter der validate() - Funktion, um diese Arbeit in nicht unterstützten Browsern.

InformationsquelleAutor WNRosenberg | 2010-12-10

Schreibe einen Kommentar