In meiner Webanwendung verwende ich eine benutzerdefinierte Validierung für meine Formularfelder. Innerhalb desselben Formulars habe ich zwei Schaltflächen: eine zum tatsächlichen Senden des Formulars und die andere zum Abbrechen / Zurücksetzen des Formulars.
Meistens verwende ich Safari als Standardbrowser. Jetzt ist Safari 5 aus und plötzlich funktionierte meine Abbrechen / Zurücksetzen-Taste nicht mehr. Jedes Mal, wenn ich die Reset-Taste drückte, wurde das erste Feld in meinem Formular scharfgestellt. Dies ist jedoch das gleiche Verhalten wie bei meiner benutzerdefinierten Formularüberprüfung. Wenn Sie es mit einem anderen Browser versuchen, hat alles gut funktioniert. Ich musste ein Safari 5-Problem sein.
Ich habe meinen Javascript-Code ein wenig geändert und festgestellt, dass die folgende Zeile das Problem verursacht:
document.getElementById("somefield").required = true;
Um sicherzugehen, dass dies wirklich das Problem ist, habe ich ein Testszenario erstellt:
<!DOCTYPE html>
<html>
<head>
<title>Test</title>
</head>
<body>
<form id="someform">
<label>Name:</label> <input type="text" id="name" required="true" /><br/>
<label>Car:</label> <input type="text" id="car" required="true" /><br/>
<br/>
<input type="submit" id="btnsubmit" value="Submit!" />
</form>
</body>
</html>
Was ich erwartet hatte, geschah. Das erste Feld "Name" erhielt automatisch den Fokus.
Ist sonst noch jemand darauf gestoßen?
Antworten:
Ich bin gerade auf dieses Problem mit Safari 5 gestoßen, und es ist seit einiger Zeit ein Problem mit Opera 10, aber ich habe nie Zeit damit verbracht, es zu beheben. Jetzt muss ich es reparieren und habe deinen Beitrag gesehen, aber noch keine Lösung, wie ich das Formular stornieren kann. Nach langem Suchen fand ich endlich etwas:
http://www.w3.org/TR/html5/forms.html#attr-fs-formnovalidate
Funktioniert mit Safari 5 und Opera 10.
quelle
novalidate
für das Formular-Tag verwenden, um dies für das gesamte Formular zu tun.formnovalidate
funktioniert auch mit Button Typ Submit :<button type="submit" formnovalidate>Submit</button>
.Beachten Sie, dass
ist falsch, es sollte einer von sein
Dies liegt daran, dass der
true
Wert darauf hindeutet, dass derfalse
Wert das Formularsteuerelement optional macht, was nicht der Fall ist.quelle
false
können, um ein Feld optional (nicht erforderlich) zu machen - was nicht der Fall ist. Das, was Sie verstehen müssen, ist, dass das Vorhandensein desrequired
Attributs das Feld erforderlich macht. Die einzige Möglichkeit, das Feld optional zu machen, besteht darin, das Attribut zu entfernen. Und SERVER SIDE VALIDATION ist alles, was wirklich zählt (Entschuldigung für das Schreien).Wenn ich Ihre Frage richtig verstehe, ist es die Tatsache, dass das
required
Attribut in Safari ein Standardverhalten zu haben scheint, das Sie verwirrt? Wenn ja, siehe: http://w3c.github.io/html/sec-forms.html#the-required-attributerequired
ist kein benutzerdefiniertes Attribut in HTML 5. Es ist in der Spezifikation definiert und wird genau so verwendet, wie Sie es derzeit verwenden.EDIT : Nun, nicht genau . Wie ms2ger hervorgehoben hat, ist das
required
Attribut ein boolesches Attribut , und hier ist, was die HTML 5-Spezifikation dazu zu sagen hat:Siehe: http://w3c.github.io/html/infrastructure.html#sec-boolean-attributes
quelle
Safari 7.0.5 unterstützt weiterhin keine Benachrichtigung zur Validierung von Eingabefeldern.
Um dies zu überwinden, können Sie ein Fallback-Skript wie das folgende schreiben: http://codepen.io/ashblue/pen/KyvmA
Um zu sehen, welche HTML5 / CSS3-Funktionen von Browsern unterstützt werden, überprüfen Sie: http://caniuse.com/form-validation
SASS / WENIGER:
quelle
Ein kleiner Hinweis zu benutzerdefinierten Attributen: HTML5 erlaubt alle Arten von benutzerdefinierten Attributen, sofern ihnen das Partikel vorangestellt ist
data-
, ddata-my-attribute="true"
. H.quelle
element.dataset
Objekt angezeigt , ebenso wie andere Vorteile (z. B. kann jQuery automatisch den Wert eines benutzerdefinierten Attributs mit dem Präfix "data-" mithilfe der.data()
Methode abrufen , dh.data("myAttribute")
= value ofdata-my-attribute
). Die Verwendung kürzerer benutzerdefinierter Attribute kann manchmal hilfreich sein, um benutzerdefinierte CSS3-Selektoren zu erstellen.In Ordnung. Als ich meine Frage aufschrieb, machte mich einer meiner Kollegen darauf aufmerksam, dass dies tatsächlich HTML5-Verhalten ist. Siehe http://dev.w3.org/html5/spec/Overview.html#the-required-attribute
In HTML5 scheint ein neues Attribut "erforderlich" zu sein. Und Safari 5 hat bereits eine Implementierung für dieses Attribut.
quelle
Fügen Sie einfach Folgendes unter Ihr Formular ein. Stellen Sie sicher, dass Ihre Eingabefelder sind
required
.quelle