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
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich lief in ein ähnliches Problem. Haben Sie bekommen das Eure Arbeit? Ich würde gerne Notizen vergleichen.
FWIW, hier ist was ich getan habe:
jsfiddle demo hier.
Eingabe hinzufügen Platzhalter für die jQuery-Unterstützung-Objekt:
Der Platzhalter Kette:
Fügen Sie eine neue Gültigkeitsregel
addMethod docs
Sind die neue Methode in das validate-Objekt Regeln
InformationsquelleAutor dido
Ich denke, dass das hinzufügen dieser zu jquery.validate.js zu den
required
- Funktion (Linie 900), die beste ist:InformationsquelleAutor ripper234
Platzhalter plugin update mein Problem gelöst 🙂
InformationsquelleAutor Tomasz Maj
können Sie dies lösen, indem Sie die Bindung dieser an die submit-Funktion (entweder über jQuery Validierung oder manuell)
InformationsquelleAutor Sara Chipps