2015-07-14 35 views
6

Sto tentando di rimuovere le virgole da un valore di input utilizzando JS/jQuery.Impossibile rimuovere le virgole dal valore numero tipo di input

Il tipo di input è il numero e sto eseguendo il processo di sanificazione su key-up.

Il codice seguente funziona correttamente quando il tipo di input è testo, ma non quando il tipo di input è il numero.

Sto utilizzando il numero del tipo di input come input di valuta, quindi perché sto tentando di rimuovere le virgole in caso di input di $ 1.000 per esempio.

E mi piacerebbe utilizzare il numero di tipo di input in quanto verrà utilizzato principalmente sui dispositivi mobili.

Qualcuno sa perché potrebbe essere per favore?

-

http://codepen.io/anon/pen/YXvxxK

$('.form input').on('keyup', function() { 
 
    field1 = $('#field1').val(); 
 
    var newField1 = parseFloat(field1.replace(/,/g, '')); 
 
    console.log(newField1); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
 
<form class="form"> 
 
    <input type="number" id="field1" /> 
 
</form>

+2

Il numero del tipo di Inout non fornisce il valore quando non è valido. – epascarello

+0

È possibile aggiungere 'console.log (campo1);' quando l'utente immette 'virgole' nella posizione errata, il valore è vuoto –

+0

Solo una nota a margine poiché è già stata fornita una risposta, ma un inserimento numerico non rende effettivamente più semplice su un dispositivo mobile. Su un iPhone la tastiera che mostra è la stessa identica per tipo testo e tipo numero. –

risposta

14

Il problema qui non è che non è possibile rimuovere le virgole, è che le virgole non sono validi * entro input elementi la cui type è number.

Se entriamo "1.234" in campo entro lo snippet di codice e colpire ritorno, siamo stati accolti con il seguente errore di convalida:

Example

Questo accade perché il valore "1.234" è ritenuto non valido. Poiché non è valido, l'elemento value restituirà una stringa vuota anziché il valore di stringa "1,234".

parseFloat("".replace(/,/g, '')) restituisce NaN.

Un rapido correzione a questo è di smettere di usare il tipo number ingresso e utilizzare text invece. Tuttavia questo potrebbe non essere ciò che desideri. Un altro modo sarebbe quello di rilevare se lo value è vuoto ("") e presentare all'utente un messaggio di errore di convalida.


* E 'importante notare che questo è specifico dell'implementazione. La specifica HTML5 afferma che i fornitori di browser sono "encouraged to consider what would best serve their users' needs". Trattare una virgola qui come non valida è parte di questa considerazione.

Problemi correlati