Czy istnieje sposób na sformatowanie input[type='number']
wartości, aby zawsze wyświetlać 2 miejsca po przecinku?
Przykład: chcę zobaczyć 0.00
zamiast 0
.
Rozwiązano postępując zgodnie z sugestiami i dodając fragment jQuery, aby wymusić format na liczbach całkowitych:
parseFloat($(this).val()).toFixed(2)
robot_speed = parseFloat(robot_speed).toFixed(2)
change
metody, aby wywoływać ją za każdym razem, gdy zmieni się pole: stackoverflow.com/a/58502237/2056125Naprawdę nie możesz, ale możesz być w połowie drogi:
źródło
Użycie
step
atrybutu umożliwi to . Określa nie tylko, ile ma cyklować, ale także dopuszczalne liczby. Użyciestep="0.01"
powinno załatwić sprawę, ale może to zależeć od tego, jak przeglądarka jest zgodna ze standardem.źródło
input[type="text"]
wszystkich rodzimych dzwonków i gwizdków, które sąinput[type="number"]
całkowicie ponownie zaimplementowane, lub zamieniają to pole na inne, aby wyświetlić wartość w zależności od stanu elementu.Rozwiązania, których używam,
input="number"
step="0.01"
działają świetnie dla mnie w Chrome, jednak nie działają w niektórych przeglądarkach, szczególnie w moim przypadku Frontmotion Firefox 35 .. które muszę wspierać.Moim rozwiązaniem było użycie jQuery z wtyczką Igora Escobara jQuery Mask w następujący sposób:
Działa to dobrze, oczywiście należy później sprawdzić podaną wartość :) UWAGA, gdybym nie musiał tego robić dla kompatybilności przeglądarki, skorzystałbym z powyższej odpowiedzi autorstwa @Rich Bradshaw.
źródło
type
atrybut wejścia tonumber
lubtext
. Jeśli zwraca,text
mimo że kod HTML jest napisany jako,number
wówczas przeglądarka nie obsługuje tego typu, a podpięcie tego zachowania do niego jest odpowiednią akcją.Na podstawie tej odpowiedzi od @Guilherme Ferreira możesz uruchomić
parseFloat
metodę za każdym razem, gdy zmieni się pole. Dlatego wartość zawsze pokazuje dwa miejsca po przecinku, nawet jeśli użytkownik zmieni wartość ręcznie wpisując liczbę.źródło
change()
funkcja zostanie uruchomiona w krótkim czasie między wprowadzeniem danych przez użytkownika a kliknięciem przycisku Prześlij. Dlatego nie powinno to stanowić problemu.Działa to w celu wymuszenia maksymalnie 2 miejsc po przecinku bez automatycznego zaokrąglania do 2 miejsc, jeśli użytkownik nie skończył pisać.
źródło
Jeśli wylądowałeś tutaj, zastanawiasz się, jak ograniczyć do 2 miejsc po przecinku , mam natywne rozwiązanie javascript:
JavaScript:
HTML:
Zauważ, że to nie może AFAIK, bronić się przed tym błędem chrome za pomocą wprowadzania liczb.
źródło
Wiem, że to stare pytanie, ale wydaje mi się, że żadna z tych odpowiedzi nie wydaje się odpowiadać na zadane pytanie, więc mam nadzieję, że pomoże to komuś w przyszłości.
Tak, zawsze możesz pokazać 2 miejsca po przecinku, ale niestety nie da się tego zrobić z samymi atrybutami elementu, musisz użyć JavaScript.
Powinienem zwrócić uwagę, że nie jest to idealne dla dużych liczb, ponieważ zawsze wymusza końcowe zera, więc użytkownik będzie musiał cofnąć kursor zamiast usuwać znaki, aby ustawić wartość większą niż 9,99
źródło
To jest szybki program formatujący w JQuery używający
.toFixed(2)
funkcji dla dwóch miejsc po przecinku.Wady: musisz to wywołać za każdym razem, gdy wprowadzany numer jest zmieniany, aby go ponownie sformatować.
Uwaga: z jakiegoś powodu, nawet jeśli dane wejściowe są typu „liczba”, jQuery
val()
zwraca ciąg. StądparseFloat()
.źródło
Moje preferowane podejście, które wykorzystuje
data
atrybuty do przechowywania stanu liczby:źródło
Najlepsza odpowiedź dała mi rozwiązanie, ale nie podobało mi się, że dane wejściowe użytkownika zostały natychmiast zmienione, więc dodałem opóźnienie, które moim zdaniem przyczynia się do lepszego doświadczenia użytkownika
https://jsfiddle.net/908rLhek/1/
źródło
źródło
ui-number-mask
dla kątowych, https://github.com/assisrafael/angular-input-maskstylko to:
Jeśli umieścisz wartość jeden po drugim ....
cyfra na cyfrę
źródło
Spójrz na to :
źródło
Oto poprawna odpowiedź:
źródło