Ich machte eine <input type="text" placeholder="phone or email" required="required" />
und ich fragte mich nur, ob ich es so machen kann, dass es entweder eine gültige E-Mail oder eine Nummer erfordern würde?Ist es möglich, eine Eingabe = "Text" zu machen, um entweder eine E-Mail oder ein Telefon zu verlangen?
Antwort
Es ist möglich, eine reine HTML-Datenüberprüfung unter input
s unter Verwendung des pattern
Attributs: http://jsfiddle.net/887saeeg/ zu implementieren. Gekoppelt mit den Pseudoklassen :valid
und :invalid
ist es möglich, eine anständige Fehlerprüfungsfunktionalität zu verwenden, die nur Präsentationstechnologien verwendet. Natürlich ist ein moderner Browser erforderlich. (Im letzten Band meiner Functional CSS-Buchreihe [verfügbar bei Amazon] verweise ich ausführlicher auf die reine Browser-Validierung).
HTML:
<form>
<input type = "text" placeholder = "Phone or Email" required pattern = "^([a-z0-9._%+-][email protected][a-z0-9.-]+\.[a-z]{2,3})|(\d{3}-\d{3}-\d{4})$"/>
<input type = "submit" value = "Send" />
</form>
EDIT: Beispiel mit CSS Pseudo-Klassen: http://jsfiddle.net/292pp5gk/.
HTML:
<form>
<label>
<input type = "text" placeholder = "Phone or Email" required pattern = "^([a-z0-9._%+-][email protected][a-z0-9.-]+\.[a-z]{2,3})|(\d{3}-\d{3}-\d{4})$"/>
<span class = "error">Please provide a valid telephone or email</span>
</label>
<input type = "submit" value = "Send" />
</form>
CSS:
label {
position: relative;
}
.error {
position: absolute;
white-space: nowrap;
bottom: -8px;
left: 0;
transform: translateY(100%);
display: none;
background-color: hsla(0, 50%, 70%, 1);
padding: 5px 10px;
border-radius: 5px;
font: normal 12px/1 Sans-Serif;
}
.error:before {
content: "";
position: absolute;
border-style: solid;
border-color: transparent transparent hsla(0, 50%, 70%, 1) transparent;
border-width: 0 5px 5px 5px;
left: 15px;
top: -5px;
}
input {
outline: 0;
}
input:invalid + .error {
display: block;
}
Aus irgendeinem Grund funktioniert es immer noch nicht für Telefonnummern, versucht, die Regex zu optimieren, aber ich bin nicht zu gut damit ... –
Ich benutze US-Format von XXX-XXX-XXXX. So funktioniert eine Telefonnummer von 202-343-2343 sowohl in den neuesten Chrome und Firefox. Für andere Telefonnummernformate müssen Sie die RegExp ändern. – DRD
Es funktioniert! Vielen Dank! –
- 1. Args4j: Ist es möglich, eine einzige Option über zwei (oder mehr) Optionen zu verlangen?
- 2. Ist es möglich, eine Eigenschaft zu deklarieren, welche Klasse entweder 'A' oder 'B' ist? (mehrere Klassenmöglichkeiten)
- 3. Ist es möglich, eine MD-Taste kleiner zu machen?
- 4. Ist es möglich, eine Abfrage wie diese zu machen?
- 5. Ist es möglich, in TFS eine "Geschichte zerstören" zu machen?
- 6. Javascript - Ist es möglich, eine Schleife mit Funktionen zu machen?
- 7. Gibt es eine Möglichkeit zu verlangen, dass ein generischer Typ eine Datenklasse in Kotlin ist?
- 8. Es ist möglich, SpeechRecognizer schneller zu machen?
- 9. Ist es möglich, eine Unterabfrage mit Sequelize.js zu machen?
- 10. Ist es möglich, ein ODER in einem MATCH zu machen oder etwas Gleichwertiges zu tun?
- 11. Ist es möglich, Schriftarten skalierbar zu machen?
- 12. Gibt es eine reine CSS-Methode, um eine Eingabe transparent zu machen?
- 13. Gibt es eine Möglichkeit zu verlangen, dass ein Argument für eine Methode nicht null ist?
- 14. in C++ Wie man eine Schleife eine Eingabe machen, um zu überprüfen, ob es gültig ist oder nicht?
- 15. Um ein Objekt zu verhöhnen, muss es entweder eine Schnittstelle implementieren oder als virtuell markiert sein?
- 16. Es ist möglich, eine Responsive Site 100% ohne Mediaabfragen oder Flexbox zu machen?
- 17. Ist es möglich, eine ListViewGroup zu erstellen
- 18. Ist es möglich, ein Modul in Python iterierbar zu machen?
- 19. createjs: Ist es möglich, Text zu rechtfertigen?
- 20. Ist es möglich, absichtlich ein Programm Thrash zu machen?
- 21. Ist es möglich, Anwendungen zu einem Drupal-Modul zu machen?
- 22. Ist es möglich, eine JavasScript-Funktion so zu machen, als ob sie eine Zeichenkette wäre, no()
- 23. PHP - Was Regex sollte ich verwenden, um eine Eingabe zu validieren, um entweder leer oder 4 Ziffern zu sein?
- 24. Ist es möglich, ein Update mit SparkSQL zu machen?
- 25. Ist es möglich, GCC in eine Endlosschleife zu bringen?
- 26. CSS-Eingabe-Typ-Selektoren - Möglich, eine "oder" oder "nicht" -Syntax zu haben?
- 27. Ist es möglich, eine Array-Erweiterung in Swift zu machen, die auf eine Klasse beschränkt ist?
- 28. Ist es möglich, ein Geräte-Hardwareprofil zu erstellen, um eine äquivalente AVD zu erstellen?
- 29. Es ist möglich, eine "SUM" Unterabfrage zu machen oder was sollte getan werden?
- 30. SQL Prozedur, um zu finden, ob eine Eingabe eine ungültige Eingabe ist
tut HTML5 type = "tel" und auch type = "E-Mail", sondern um zu bestimmen, ob übereinander verwendet werden soll, Du wirst etwas Javascript brauchen, um das schwere Heben zu machen. Auf ein @ -Zeichen oder ähnliches zu achten, wäre wahrscheinlich der einfachste Weg, um danach zu gehen und dann zu validieren. – ThatTechGuy
@ThatTechGuy Im Versuch, etwas von einer Tel-und E-Mail-Kombination zu tun, wo, wenn es nicht eine E-Mail ist, dann sollte es ein Telefon sein, ohne sich auf js verlassen. –
Ja, DRDs Antwort ist so ziemlich deine einzige Option, mir war kein Regex-Attribut bekannt, aber da es so neu ist, wie DRD erklärt hat, wirst du Probleme mit einigen Browsern haben. – ThatTechGuy