HTML-Form-Feld - How erfordern eine Eingabe-format
Was ich tun will ist hier erforderlich, dass die Telefonnummern eingegeben werden, in meinem HTML-Formular als (XXX) XXX-XXXX und dass die SS Zahlen eingegeben als XXX-XX-XXXX. Thats it.
Der einzige Grund, warum ich das Tue ist, so dass die form die Ergebnisse sind konsistent und leicht in Excel exportiert werden.
Habe ich gesagt, Javascript zu verwenden, dies zu tun, aber vielleicht bin ich nicht Fortgeschritten genug, um zu verstehen, alle Schritte zu tun.
Kann jemand bitte zeigen Sie mich in die richtige Richtung wenn man bedenkt, dass ich bin ein Anfänger?
Wow danke, dass du so viel Ethan und @suman-bogati! Ich bin FAST da jetzt! Das Feld nun erscheint eine Fehlermeldung, die besagt die Verwendung des richtigen format der 555-55-5555. Das ist großartig. Aber egal was ich eingeben geben Sie in diesem Feld das popup bleibt bestehen. Ich habe versucht, 555-55-5555 und auch 555555555 und weder akzeptiert. Hier ist der HTML-Code für das Feld:
<label>
Social Security Number:
<input id="ssn" required pattern="^d{3}-d{2}-d{4}$"
title="Expected pattern is ###-##-####" />
</label>
</div>
<script>$('form').on('submit', function(){
$(this).find('input[name="SocialSecurity"]').each(function(){
$(this).val() = $(this).val().replace(/-/g, '');
});
$(this).find('input[name="ssn"]').each(function(){
$(this).val() = $(this).val().replace(/-/g, '');
});
});</script>
<br />
pattern
- Attribut gibt das format. Auf der anderen Seite, sollten Sie nie das Vertrauen client-seitige Validierung, da es leicht umgangen werden, müssen Sie immer überprüfen Sie das format auf der server-Seite.so wollen Sie zwei Muster, die abgestimmt werden sollte
(XXX) XXX-XXXX
und (XXX) XXX-XXXX
?Susan, das ist richtig. Ändern Sie die Zeile <input name="SocialSecurity" size="9" pattern="(!^\d{3}-\d{2}-\d{4}$" style="width: 141px" type="text" /> Tut absolut nichts.
Aus der usability-Sicht, der Ansatz ist komplett falsch. Sie sollten sich Fragen: welche Formate kann ich mit sinnvoll, und kanonisieren Sie das format, das ich will, und wie kann ich helfen, die Benutzer verwenden, einige von diesen Formaten? Lösung des falschen Problems ist auch nicht wesentlich einfacher als die Lösung des richtigen Problems.
InformationsquelleAutor JefeTheTechy | 2014-02-08
Du musst angemeldet sein, um einen Kommentar abzugeben.
Der einfachste Weg, dies zu tun ist, indem Sie einfach mehrere Felder:
Während dieser Ansatz ist sicherlich leicht, es ist nicht so toll. Der Benutzer muss drücken Sie tab, oder klicken Sie auf jedes Feld, um die Daten einzugeben, und es ist nichts (anderes als die üblichen Sinne), verhindert, dass Sie vom Eintritt in andere Dinge als stellen.
Ich immer das Gefühl, dass, wenn es um die Validierung, die weniger bekommen Sie die Benutzer sind, desto besser. Lassen Sie Sie geben Sie Ihre Telefonnummer ein, in welchem format auch immer Sie mögen, dann Sie Peeling, entfernen alles außer Ziffern. So kann der Benutzer geben Sie "5555551212" oder "(555) 555-1212", aber die Datenbank wird immer halten "5555551212".
Die andere Sache zu beachten ist, dass HTML5 bietet einige schöne spezielle Typen für den Telefon-Nummern (aber nicht Sozialversicherungsnummern). Einen modernen browser kümmert sich um die Validierung von Eingaben und, noch besser, mobile Geräte, die numerische Tastatur und nicht auf die gesamte Tastatur.
Gegeben, dass die besten Art und Weise, um Ihre form ist diese:
Wenn der Benutzer einen modernen browser, diese mit der Anwender-Seite der input-Validierung für Sie. Wenn Sie nicht, Sie muss eine Validierung Bibliothek oder polyfill. Es gibt eine ganze Liste von HTMl5 Formular-Validierung polyfills hier:
https://github.com/Modernizr/Modernizr/wiki/HTML5-Cross-Browser-Polyfills#wiki-web-forms
Bleibt jetzt normalisieren Sie Ihre Daten, wenn Sie in der Datenbank speichern.
Der ideale Ort, das zu tun, wäre das back-end; es sagt nicht, wo Sie Ihr Formular gehen, obwohl, so vielleicht Sie don T haben zu sagen, wie Dinge verarbeitet werden, die auf dem back-end. Sie können dies also in der front-end statt. Zum Beispiel mit jQuery:
Dies ist nicht eine perfekte Ansatz entweder: wenn Sie die Validierung in dieser Funktion, und die Validierung fehlschlägt, wird der Benutzer sehen, seine oder Ihre Eingabe ersetzt durch die normalisierten Versionen, die kann verwirrend sein.
Der beste Ansatz wäre die Verwendung von AJAX und
.serialize
; nicht nur können Sie haben eine bessere Kontrolle über die Benutzeroberfläche, aber Sie können alles tun, die Validierung, die Sie wollen. Aber das ist wohl ein wenig über das hinaus, was müssen Sie jetzt tun.Beachten Sie, dass Telefon-Validierung ist die schwierigste. Die HTML5-Telefon-Validierung ist sehr Freizügig, es den Menschen ermöglicht, geben Sie internationale Telefonnummern, die haben ziemlich komplizierte Formate. Auch die Menschen in den USA wird manchmal geben Sie Telefon-Nummern wie "+1 (555) 555-1212", und dann haben Sie 8 Ziffern statt 7. Wenn Sie wirklich wollen, Sie zu beschränken auf 7 Ziffern haben, müssen Sie fügen Sie Ihre eigenen benutzerdefinierten Validierung:
Deckt alle gängigen Varianten Menschen nutzen (Zeiten, Leerzeichen, Bindestriche, Klammern), und immer noch erlauben, nur 7-stellige Telefonnummern aus den USA.
Hier ein jsfiddle Nachweis der HTML5-Validierung und Normalisierung:
http://jsfiddle.net/Cj7UG/1/
Ich hoffe, das hilft!
Es war ein Tippfehler in meiner SSN-Muster (ich war mit drei Ziffern für die letzten bit-anstelle von vier). Korrigiert habe ich, und fügte hinzu, ein jsfiddle demonstrieren alle arbeiten: jsfiddle.net/Cj7UG/1
InformationsquelleAutor Ethan Brown
Verwenden Sie dieses Muster, wenn Sie zwei Muster, die abgestimmt werden sollte, wie gebeten, in Frage stellen.
DEMO
InformationsquelleAutor Suman Bogati
Hier ist eine komplette Lösung mit jquery und jquery tools validator:
regex-Muster, die behandeln würde, beiden Fällen ist :
HTML:
Klicken Sie hier für die demo auf jsfiddle
InformationsquelleAutor Goran.it
verwenden können sth wie diese:
Getestet habe ich es in ff
InformationsquelleAutor scripter