Ich habe eine grundlegende Validierung für ein Formular, das zwei jQuery UI DatePickers enthält. Das Format des Datums ist JJ-MM-TT. Es gibt eine erforderliche und Datum Validierung für beide DatePicker.
Diese funktionieren wie erwartet in Chrome & amp; FF, aber in IE7 / IE8 falsch negative (ungültige Eingabe wird als ungültig bezeichnet) auslösen.
Datumswähler-Setup:
%Vor%Dies ist nicht verwandt, aber ich dachte, ich würde, nur für den Fall:
%Vor%Die tatsächliche Validierung:
%Vor%In IE7 / IE8 führt eine gültige Eingabe (nur das Auswählen eines Datums) mit beiden DatePickern zum Datum Fehler ("Ungültiges Datum. Muss formatiert sein JJJJ-MM-TT"). In anderen Browsern tritt dies nicht auf.
Es erzeugt auch keine Javascript-Fehler.
Vielen Dank im Voraus,
Ian
Ich glaube, Sie suchen nach der Option dateISO
:
IE analysiert keine Daten im yyyy-mm-dd
-Format, weshalb die normale date
im IE nicht funktioniert. Ich glaube, jQuery validate verwendet nur Date.parse
oder new Date(dateString)
, um die Gültigkeit zu überprüfen. Um dies zu überprüfen, versuchen Sie new Date("1987-11-14")
und alarmieren den Wert in IE und FF. Sie erhalten NaN
in IE und ein Datumsobjekt in FF.
Hier ist ein funktionierendes Beispiel: Ссылка
Senden Sie das Datum, wie Sie es formatiert, in ein verstecktes Feld in Ihrem Formular mit altField
und altFormat
, das hat meine NaN-Fehler behoben.
Ich hatte ein Problem in meinem eigenen Code, wo das Datumsformat das selbe war wie oben beschrieben und das Formular in der JSP (mit ein wenig Unterstützung von Form-Tags von Spring) sah so aus:
%Vor%Das Problem war, dass das Datumsfeld optional ist (erforderlich in den JQuery-Validierungsregeln = false), aber es verwendete DatePicker und wurde somit automatisch validiert, wenn es ausgefüllt wurde. Das Problem war, dass es in allen Browsern und auf IE9 (und höher) korrekt validiert wurde, aber auf IE8 verursachte es einen "ungültigen Datums" -Validierungsstopp.
Ich habe mit den jquery-Validierungsregeln gespielt, ich habe versucht, dateISO zu verwenden (obwohl ich keineswegs sage, dass diese Lösung für einige nicht funktioniert), ohne Erfolg.
Es stellte sich heraus, dass ich in meinem Fall nur das Attribut 'type="date" entfernen musste. Jetzt wird das Datum korrekt validiert und bleibt ein optionales Feld.
In meinem Fall führte das Attribut class="date" (nicht type="date") für das Eingabefeld dazu, dass der Validator dem Feld automatisch eine Datumsüberprüfung hinzufügte, was das falsche Negativ in IE8 auslöste. Also habe ich die Klasse in 'date-select' geändert und dann die dateISO-Regel wie in Andrew Whitakers Antwort verwendet.
Tags und Links jquery validation jquery-validate jquery-ui-datepicker