Ho creato uno <input type="text" placeholder="phone or email" required="required" />
e mi stavo chiedendo se posso farlo in modo che sia necessaria una e-mail valida o un numero?E 'possibile fare un input = "testo" per richiedere una e-mail o un tel?
risposta
È possibile implementare la convalida dei dati solo HTML su input
s utilizzando l'attributo pattern
: http://jsfiddle.net/887saeeg/. Accoppiato con le pseudo-classi :valid
e :invalid
, è possibile avere una discreta funzionalità di controllo degli errori utilizzando solo le tecnologie di presentazione. Certo, è necessario un browser moderno. (Tratterò la convalida del browser in modo più dettagliato nell'ultimo volume della mia serie di libri Funzionali CSS [disponibile su Amazon]).
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: Esempio di utilizzo di CSS pseudo-classi: 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;
}
Per qualche motivo, non funziona ancora per i numeri di telefono, ho provato a modificare la regex ma non sono troppo bravo con questo ... –
Sto usando il formato USA XXX-XXX-XXXX. Quindi un numero di telefono di 202-343-2343 funziona sia in Chrome che in Firefox. Per altri formati di numeri di telefono dovrai modificare RegExp. – DRD
Funziona! Grazie! –
- 1. C'è un attributo href per skype, come "mailto:" o "tel:"?
- 2. È possibile richiedere una classe in un modello erb?
- 3. Inserimento di una pausa in un tel: // collegamento
- 4. È possibile modificare un input di testo con javascript e aggiungerlo allo stack di annullamento?
- 5. È possibile fare un parametro per implementare due interfacce?
- 6. Esiste un bug di tipo email di input e di tipo ng?
- 7. validazione non si lavora con INTL-TEL-INPUT
- 8. Richiedere un'istanza di un modello
- 9. Come fare una conversione vocale in un convertitore di testo?
- 10. E 'possibile "congelare" un Set (o una Mappa)?
- 11. Sottolineatura del testo in un <input> Casella
- 12. linea Aggiunta di interruzioni di un testo/email plain
- 13. Invio di e-mail in modo che "da" sia un nome o un testo anziché un indirizzo e-mail reale
- 14. Forzare un input textarea per iniziare con il testo predefinito
- 15. Tipo MIME per soddisfare HTML, email, immagini e testo normale?
- 16. Fare un campo di input HTML visualizzato come solo il testo nel campo
- 17. Come posso vedere se tel: è effettivamente collegato a un dispositivo che può effettuare una chiamata?
- 18. Dove posso iniziare a fare un attacco di input linux?
- 19. Seleziona input e input di testo in HTML: il modo migliore per ottenere una larghezza uguale?
- 20. Jquery: Speculare un input di testo in un altro
- 21. Fare una stringa di testo riempire un rettangolo
- 22. Perché scegliere un DIV modificabile su un INPUT o TEXTAREA
- 23. E 'possibile caricare un file E inviare il testo in un unico modulo?
- 24. Fare clic su un ingresso o pulsante disattivato
- 25. Come implementare un input con una maschera
- 26. Richiedere almeno un carattere alfa
- 27. Richiedere un file con un'intestazione personalizzata
- 28. Usa jQuery per trovare l'etichetta per un controllo o una casella di testo selezionata
- 29. Architettare un sistema per email di promemoria
- 30. Un rivestimento in Ruby per visualizzare un prompt, ottenere input e assegnare a una variabile?
HTML5 ha type = "tel" e anche type = "email", ma al fine di determinare se uno dovrebbe essere usato sopra l'altro Avrai bisogno di un javascript che faccia il lavoro pesante. Guardare per un segno @ o qualcosa potrebbe essere la via più facile da percorrere e quindi convalidare in base a ciò. – ThatTechGuy
@ThatTechGuy Sto cercando di fare qualcosa di una combinazione di tel e email, dove se non è una email, allora dovrebbe essere un tel, senza dover fare affidamento su js. –
Sì, la risposta DRD è praticamente la tua unica opzione, non ero a conoscenza di un attributo regex, ma dato che è così nuovo come DRD ha spiegato che avrai problemi con alcuni browser. – ThatTechGuy