This jsfiddle demonstrates the following issue.valore Get di <input type = "numero"> con JS quando contiene caratteri non numerici
L'esempio più semplice è:
<input id="number" type="number" value="1">
console.log(document.getElementById('number').value);
Questo registra 1 come previsto. Tuttavia:
<input id="number" type="number" value="1A">
console.log(document.getElementById('number').value);
Registra solo una stringa vuota '', a causa del carattere non numerico nel valore. Alcuni dispositivi + browser (ad esempio Chrome) consentono di immettere caratteri non numerici in questi input.
Questo è fastidioso perché voglio l'input type = "number" per i dispositivi che lo supportano (ad esempio iPhone, tastiera del numero iPad). Comunque voglio usare javascript per fermare l'input sporco da inserire - che richiede il recupero del valore su keyup - quindi regex sostituendo i caratteri non numerici.
Sembra che il metodo jQuery's .val() restituisca lo stesso risultato.
Non impedire l'input dell'utente, è molto fastidioso. Controlla il valore su keyup e se il valore non è valido, mostra un messaggio non invadente per far sapere all'utente che il valore non è valido e lasciare che lo risolvano da solo. Ti interessa solo che è un valore valido quando viene inviato al server, nel frattempo il valore può essere qualunque. Oh, e Firefox visualizza il valore inserito. – RobG
I campi inputed hanno il solo 'type = number' sui dispositivi iOS, se si desidera il metodo di input – olsn
Perché è necessario il valore? Puoi sapere cosa verrà inserito dagli eventi della tastiera. –