In meinen Formularen möchte ich beispielsweise die neuen HTML5-Formulartypen verwenden <input type="url" />
( weitere Informationen zu den Typen hier ).
Das Problem ist, dass Chrome super hilfreich sein und diese Elemente für mich validieren möchte, außer dass es daran scheiße ist. Wenn die integrierte Validierung fehlschlägt, gibt es keine andere Meldung oder Anzeige als das Element, das den Fokus erhält. Ich fülle URL-Elemente mit vor "http://"
, und meine eigene benutzerdefinierte Validierung behandelt diese Werte nur als leere Zeichenfolgen. Chrome lehnt dies jedoch ab. Wenn ich die Validierungsregeln ändern könnte, würde das auch funktionieren.
Ich weiß, dass ich einfach wieder verwenden kann, type="text"
aber ich möchte die netten Verbesserungen, die diese neuen Typen bieten (z. B. wird automatisch auf ein benutzerdefiniertes Tastaturlayout auf Mobilgeräten umgeschaltet):
Gibt es also eine Möglichkeit, die automatische Validierung auszuschalten oder anzupassen?
$('[inputmode]').each(function () { this.attr({type: this.attr('inputmode'), novalidate: true}) });
inputmode
wäre. Wenn Sie die Dinge auf Ihre Weise tun, können Sie (zum Beispiel) immer noch keine nicht numerischen Werte lesen, die der Benutzer in ein Eingabefeld vom Typ eingibt number
. Versuchen Sie beispielsweise, etwas Nicht-Numerisches in das Textfeld dieser Geige einzugeben und auf die Schaltfläche zu klicken.
<input type='number'>
, dass nicht numerische Werte überhaupt nicht akzeptiert werden?
inputmode
Attribut , das - wenn ich verstehe, was ich richtig lese - verwendet werden kann, um anzugeben, welcher Tastaturtyp dem Benutzer angeboten werden soll, wenn er mit dem Feld interagiert, ohne auch Validierungsregeln zu implizieren. Irgendwann in der Zukunft wird die Verwendung desinputmode
Attributs anstelle destype
Attributs wahrscheinlich die richtige Lösung für dieses Problem sein - aber noch nicht.