Jak mogę ograniczyć dane wejściowe do pola tekstowego, aby akceptowało tylko liczby i przecinek dziesiętny?
javascript
html
TinTin
źródło
źródło
isNaN(this.textbox.value)
??Odpowiedzi:
To naprawdę działa!
źródło
&& charCode != 190 && charCode != 110 && (charCode > 105 || charCode < 96)
Czy tego szukasz?
Mam nadzieję, że to pomoże.
EDYCJA: Powyższy przykład zredagowałem tak, że może istnieć tylko jedna kropka, poprzedzona co najmniej jedną cyfrą, a po niej co najmniej jedna cyfra.
źródło
Przyjęte rozwiązanie nie jest kompletne, ponieważ możesz wprowadzić wiele znaków „.”, Na przykład 24 .... 22..22. z niewielkimi modyfikacjami będzie działać zgodnie z przeznaczeniem:
źródło
ondrop="return false;" onpaste="return false;" oncontextmenu="return false;"
wydaje się być wystarczająceOto jeszcze jedno rozwiązanie, które pozwala na liczby dziesiętne, a także ogranicza cyfry po przecinku do 2 miejsc po przecinku.
źródło
if
nie zawiera litery „C”..
), myślnika (-
) i litery,e
gdy tekst jest wklejany lub upuszczany na pole. Element HTML będzie również wyświetlał dwie strzałki do domyślnie zwiększania i zmniejszania liczby w Chrome. Przycisk zmniejszania wartości umożliwia spadek liczby poniżej zera.Wszystkie prezentowane tutaj rozwiązania wykorzystują pojedyncze kluczowe zdarzenia. Jest to bardzo podatne na błędy, ponieważ dane wejściowe można również podać za pomocą kopiowania i wklejania lub przeciągania i upuszczania. Również niektóre z rozwiązań ograniczyć użycie kluczy bez znaków podobnych
ctrl+c
,Pos1
etc.Sugeruję, aby zamiast sprawdzać każde naciśnięcie klawisza, sprawdzać, czy wynik jest zgodny z Twoimi oczekiwaniami.
Plik
oninput
Zdarzenie jest wywoływane po prostu coś się zmieniło w polu tekstowym i przed renderowane.Możesz rozszerzyć wyrażenie regularne na dowolny format liczb, który chcesz zaakceptować. Jest to znacznie łatwiejsze w utrzymaniu i rozszerzaniu niż sprawdzanie pojedynczych naciśnięć klawiszy.
źródło
Szukasz czegoś takiego?
źródło
Wystarczy zastosować tę metodę w Jquery i zweryfikować swoje pole tekstowe, aby zaakceptować liczbę tylko z dziesiętną.
Zobacz działające demo tutaj
źródło
Dla każdego, kto się tutaj potyka, tak jak ja, oto wersja jQuery 1.10.2, którą napisałem, która działa bardzo dobrze dla mnie, choć wymaga dużych zasobów:
źródło
Niewielka korekta genialnej odpowiedzi @ rebisco, która doskonale sprawdza ułamek dziesiętny.
źródło
Jeśli chcesz go dla wartości zmiennoprzecinkowych,
Oto funkcja, której używam
źródło
źródło
źródło
oto skrypt, który Ci pomoże:
źródło
Załóżmy, że nazwa pola tekstowego to
Income
Wywołaj tę metodę walidacji, gdy chcesz zweryfikować swoje pole:
źródło
Rozszerzenie odpowiedzi @ rebisco. poniższy kod zezwoli tylko na cyfry i pojedynczy znak „.” (kropka) w polu tekstowym.
źródło
Lepsze rozwiązanie
źródło
Postanowiłem rozwiązać ten problem na
oninput
wydarzenia, aby poradzić sobie z wklejaniem klawiatury, wklejaniem myszy i naciśnięciami klawiszy. Przekaż wartość true lub false, aby wskazać walidację dziesiętną lub całkowitą.Zasadniczo to trzy kroki w trzech liniach. Jeśli nie chcesz skracać liczb dziesiętnych, skomentuj trzeci krok. Korekty zaokrąglania można również dokonać w trzecim kroku.
źródło
Zaczynając od @rebisco odpowiedź:
Dopuszcza tylko ten format: 123123123 [.121213]
Demo tutaj demo
źródło
Mam nadzieję, że to zadziała.
źródło
Poniższy kod zadziałał dla mnie
Pole wprowadzania ze zdarzeniem „onkeypress” w następujący sposób
Funkcja „isNumberKey” jest następująca
źródło
Zauważyłem, że dla wszystkich udzielonych tutaj odpowiedzi rzeczy nie działają, jeśli zaznaczymy część tekstu w polu tekstowym i spróbujemy nadpisać tę część. Zmodyfikowałem więc funkcję jak poniżej:
źródło
Dla liczb dziesiętnych, a także dopuszczających liczby ujemne z 2 miejscami dziesiętnymi po przecinku ... Zmodyfikowałem funkcję, aby:
źródło
alternatywnym sposobem ograniczenia danych wejściowych do pola tekstowego, tak aby akceptowało tylko liczby i przecinek dziesiętny, jest użycie javascript w danych wejściowych HTML. To działa dla mnie:
- Akceptuje--
9
9,99
--Nie akceptuje--
9,99,99
ABC
źródło
Pozwoli to tylko na numeryczne i pozwoli wstawić „.” dla dziesiętnych.
źródło
To działa dobrze.
źródło
Najlepsze i działające rozwiązanie z przykładową demonstracją na żywo w czystym Javascript: https://jsfiddle.net/manoj2010/ygkpa89o/
źródło
Sam pracuję nad tym problemem i to mam do tej pory. To mniej więcej działa, ale nie można później dodać minus ze względu na nową kontrolę wartości. Nie zezwala również na przecinek jako separator tysięcy, tylko po przecinku.
Nie jest doskonały, ale może dać kilka pomysłów.
Umożliwia:
11 11 .245 (w kontrolerze sformatowanym przez rozmycie do 1111.245)
11,44
-123,123
-1 014,
0123 (sformatowany jako rozmycie do 123)
nie pozwala:
! @ # $ / *
ABC
11.11.1
11,11.1
.42
źródło
źródło
Wiem, że to pytanie jest bardzo stare, ale wciąż często otrzymujemy takie wymagania. Istnieje wiele przykładów, ale wiele z nich wydaje się być zbyt rozwlekłych lub skomplikowanych, aby można je było łatwo wdrożyć.
Zobacz ten https://jsfiddle.net/vibs2006/rn0fvxuk/ i popraw go (jeśli możesz). Działa w przeglądarce IE, Firefox, Chrome i Edge.
Oto działający kod.
źródło
Możesz ograniczyć wartości do wprowadzenia przez użytkownika, określając zakres wartości ASCII.
Przykład : od 48 do 57 dla wartości liczbowych (od 0 do 9)
źródło