2010-06-22 2 views
17

sto usando uno dei nuovi tipi di input HTML5, number:Ottenere il valore di un numero HTML5 ingresso

<input type="number" /> 

In Opera, che è l'unico browser desktop che conosco che attualmente riconosce, è lo rende come tale:

enter image description here

Il problema che sto affrontando è uno dei convalida. Se un utente digita qualcosa nel campo, ad esempio: "abc", il valore restituito da myInput.value è una stringa vuota. Ciò rende impossibile stabilire se l'utente ha lasciato il campo vuoto o se ha inserito dati errati. C'è un modo per ottenere il valore reale del campo?

risposta

13

Il progetto HTML5 definisce: algoritmo sanificazione

Il valore è la seguente: se il valore dell'elemento non è un numero a virgola mobile valido, quindi impostare alla stringa vuota invece.

Reference1

suppongo che avrei dovuto utilizzare un valore predefinito di "0" per assicurarsi che il campo è stato lasciato intatto o se è stato inserito qualcosa di valido, dal momento che sembra che ci sia alcun modo ovvio per differenziare il Due.

Dopo aver letto le specifiche di validazione e alcuni test (in Opera 10.54) ho concluso che:

<input id="email" type="email" value="blah"> 
document.getElementById("email").validity.typeMismatch // True 

Non funziona su <input type="number">. Non sono sicuro se è previsto, o se è un lavoro in corso. La proprietà tuttavia esiste, sebbene restituisca sempre False.

Read more2

È anche possibile impostare un metodo di validazione personalizzata Reference3

+2

palle oh. Lasciare il campo vuoto deve essere uno stato valido per i miei scopi (ed è diverso per inserire 0 ...) Grazie comunque. – nickf

+0

Quella specifica dice "Se si applicano le regole per l'analisi dei valori numerici in virgola mobile in ingresso, si genera un errore, quindi si restituisce un errore, altrimenti si restituisce il numero risultante." Pensi che ci sarebbe un modo per cogliere quell'errore? – nickf

+0

Vedere la risposta aggiornata. – Daniel