2015-07-14 14 views
6

Próbuję usunąć przecinki z wartości wejściowej za pomocą JS/jQuery.Nie można usunąć przecinków z wartości typu wejściowego

Typem wejścia jest liczba i uruchamiam proces dezynfekcji po naciśnięciu klawisza.

Poniższy kod działa poprawnie, gdy typem wejściowym jest tekst, ale nie wtedy, gdy typem wejściowym jest liczba.

Używam numeru typu wejścia jako danych wejściowych waluty, dlatego próbuję usunąć przecinki, na przykład na przykład ktoś wkłada 1000 USD.

Chciałbym użyć numeru typu wejścia, ponieważ będzie on używany głównie na urządzeniach mobilnych.

Czy ktoś wie, dlaczego to może być przydatne?

-

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

Numer typu Inout nie podaje wartości, gdy jest nieważny. – epascarello

+0

Możesz dodać 'console.log (field1);' gdy użytkownik wprowadzi 'przecinki 'w niewłaściwej pozycji, wartość jest pusta –

+0

Tylko notatkę boczną, ponieważ ta odpowiedź już została odebrana, ale wprowadzenie numeru nie ułatwia niczego na urządzeniu mobilnym. Na iPhonie wyświetlana klawiatura jest dokładnie taka sama dla tekstu i numeru typu. –

Odpowiedz

14

Problemem nie jest to, że nie można usunąć przecinki, to nic, że przecinki nie są ważne w ciągu input * elementów, których type jest number.

Jeśli wpisać „1234” w polu obrębie fragmentu kodu i uderzył Powrót, jesteśmy witani z powodu następującego błędu walidacji:

Example

Dzieje się tak, ponieważ wartość „1234” jest uważany za nieważny. Ponieważ jest to nieważne, element value powróci jako pusty ciąg zamiast wartości ciągu "1,234".

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

Szybkie naprawianie fix w tym celu należy przerwać używanie typu wejścia number i użyć zamiast niego text. Jednak może nie być to, czego pragniesz. Innym sposobem byłoby wykrycie, czy value jest pusty ("") i przedstawienie użytkownikowi komunikatu o niepowodzeniu weryfikacji.


* Ważne jest, aby pamiętać, że to zależy od konkretnej implementacji. Specyfikacja HTML5 stwierdza, że ​​dostawcy przeglądarek to "encouraged to consider what would best serve their users' needs". Traktowanie przecinka tutaj jako nieważnego jest częścią tego rozważania.

Powiązane problemy