Muszę się upewnić, że określone <input>
pole przyjmuje tylko liczby jako wartość. Dane wejściowe nie są częścią formularza. W związku z tym nie jest przesyłany, więc sprawdzanie poprawności podczas przesyłania nie jest opcją. Chcę, aby użytkownik nie mógł wpisywać żadnych znaków innych niż cyfry.
Czy jest na to zgrabny sposób?
html
input
numbers
validating
Chiel ten Brinke
źródło
źródło
Odpowiedzi:
HTML 5
Możesz użyć liczby typu wejściowego HTML5, aby ograniczyć tylko wpisy liczbowe:
Działa to tylko w przeglądarce skarg HTML5. Upewnij się, że typ dokumentu html to:
<!DOCTYPE html>
Zobacz też https://github.com/jonstipe/number-polyfill, aby uzyskać przejrzystą obsługę w starszych przeglądarkach.
JavaScript
Aktualizacja: jest nowe i bardzo proste rozwiązanie:
Zobacz tę odpowiedź lub wypróbuj ją sam na JSFiddle .
W ogólnym celu możesz przeprowadzić walidację JS, jak poniżej:
Jeśli chcesz zezwolić na ułamki dziesiętne, zamień warunek „jeśli” na:
Źródło: wprowadzanie tekstu HTML umożliwia tylko wprowadzanie numeryczne
Demo JSFiddle: http://jsfiddle.net/viralpatel/nSjy7/
źródło
var charCode = (evt.which) ? evt.which : evt.keyCode;
Możesz również użyć atrybutu pattern w html5:
Samouczek dotyczący sprawdzania poprawności danych wejściowych
Chociaż, jeśli twój doctype nie jest
html
, myślę, że będziesz musiał użyć javascript / jquery.źródło
Szybki i łatwy kod
Pozwoli to na użycie tylko liczb i cofania.
Jeśli potrzebujesz również części dziesiętnej, użyj tego fragmentu kodu
źródło
Wypróbuj ten kod wraz z samym polem wejściowym
będzie działać dobrze.
źródło
Możesz użyć
<input type="number" />
. Pozwoli to tylko na wprowadzanie liczb do innego pola wprowadzania.Przykład: http://jsfiddle.net/SPqY3/
Należy pamiętać, że
type="number"
znacznik wejściowy jest obsługiwany tylko w nowszych przeglądarkach.W przypadku przeglądarki Firefox możesz sprawdzić poprawność danych wejściowych za pomocą javascript:
http://jsfiddle.net/VmtF5/
Aktualizacja 2018-03-12: Obsługa przeglądarek jest znacznie lepsza, teraz jest obsługiwana przez:
źródło
aw js:
lub możesz napisać to w skomplikowany, ale użyteczny sposób:
Uwaga : między przeglądarkami i wyrażenie regularne dosłownie.
źródło
0.43
lub.43
), które można by zrobić sprawdzając wartość bieżącego wejścia plus wciśnięty klawisz. Byłoby to brzydkie w jednowierszowym kodzie, polecam do tego użyć funkcji. Aby przetestować liczbę całkowitą lub zmiennoprzecinkową, sprawdź tutaj .Użyłem wyrażenia regularnego, aby zastąpić wartość wejściową wymaganym wzorcem.
źródło
onkeyup
wyzwala się po zwolnieniu klawisza.isNaN(parseFloat(value))?
sprawdza, czy wartość wejściowa nie jest liczbą.Jeśli nie jest to liczba, wartość jest ustawiana na 1000
:
Jeśli jest to liczba, wartość jest ustawiana na wartość.Uwaga: z jakiegoś powodu działa tylko z
type="number"
Aby uczynić go jeszcze bardziej ekscytującym, możesz również wyznaczyć granicę:
Cieszyć się!
źródło
Trochę z tym walczyłem. Wiele rozwiązań tutaj i gdzie indziej wydawało się skomplikowanych. To rozwiązanie wykorzystuje jQuery / javascript obok HTML.
W moim przypadku śledziłem małe ilości z minimalną wartością 1, stąd min = "1" w tagu wejściowym i abc = 1 w sprawdzaniu isNaN (). W przypadku liczb tylko dodatnich można zmienić te wartości na 0, a nawet po prostu usunąć min = "1" ze znacznika wejściowego, aby uwzględnić liczby ujemne.
Działa to również dla wielu pudełek (i może zaoszczędzić trochę czasu wczytywania w porównaniu z wykonywaniem ich indywidualnie według id), po prostu dodaj klasę „validateNumber” tam, gdzie jest to potrzebne.
Wyjaśnienie
parseInt () w zasadzie robi to, czego potrzebujesz, z wyjątkiem tego, że zwraca NaN, a nie jakąś wartość całkowitą. Za pomocą prostego if () możesz ustawić "rezerwową" wartość, którą preferujesz we wszystkich przypadkach, gdy zwracany jest NaN :-). Również W3 stwierdza tutaj, że globalna wersja NaN będzie typem rzutowania przed sprawdzeniem, co daje dodatkowe sprawdzanie (Number.isNaN () tego nie robi). Wszelkie wartości wysyłane do serwera / zaplecza nadal powinny być tam sprawdzane!
źródło
JSFiddle: https://jsfiddle.net/ug8pvysc/
źródło
jeśli potrafisz używać HTML5, możesz to zrobić.
<input type="number" />
Jeśli nie, będziesz musiał to zrobić za pomocą javascript, jak powiedziałeś, że nie zostanie przesłany, aby zrobić to z codebehind.PS nie przetestował kodu, ale powinien być mniej więcej poprawny, jeśli nie sprawdź literówek: D Możesz dodać kilka więcej rzeczy, na przykład co zrobić, jeśli ciąg jest pusty, itp. Możesz też to przyspieszyć: D
źródło
A co powiesz na używanie
<input type="number"...>
?http://www.w3schools.com/tags/tag_input.asp
Tutaj jest również pytanie, które zawiera kilka przykładów użycia JavaScript do walidacji .
Aktualizacja: powiązane z lepszym pytaniem (dzięki alexblum).
źródło
jeśli nie jest liczbą całkowitą, ustaw 0
źródło
Przyjęta odpowiedź:
Jest dobry, ale nie doskonały. U mnie to działa, ale otrzymuję ostrzeżenie, że instrukcję if można uprościć.
Wtedy wygląda to tak, co jest o wiele ładniejsze:
Chciałbym skomentować oryginalny post, ale moja reputacja jest zbyt niska, aby to zrobić (właśnie utworzyłem to konto).
źródło
Możesz użyć
<input>
tagu z atrybutem type = 'number'.Na przykład możesz użyć
<input type='number' />
To pole wejściowe dopuszcza tylko wartości liczbowe. Możesz również określić minimalną i maksymalną wartość, która powinna być akceptowana przez to pole.
źródło
Proszę zobaczyć mój projekt filtra między przeglądarkami wartości elementu wprowadzania tekstu na Twojej stronie internetowej przy użyciu języka JavaScript: Filtr klucza wejściowego . Możesz odfiltrować wartość jako liczbę całkowitą, liczbę zmiennoprzecinkową lub napisać niestandardowy filtr, taki jak filtr numeru telefonu. Zobacz przykład kodu wprowadzania liczby całkowitej:
Zobacz także moją stronę „Pole całkowite:” przykładu filtru klucza wejściowego
źródło
W ogólnym celu możesz przeprowadzić walidację JS, jak poniżej:
Będzie działać na klawiaturze numerycznej i zwykłych klawiszach numerycznych
źródło
Dodaj wewnątrz tagu wejściowego: onkeyup = "wartość = wartość.replace (/ [^ \ d] / g, '')"
źródło
Zaktualizowałem niektóre opublikowane odpowiedzi, dodając następujące:
Określ, ile liczb po przecinku jest dozwolonych.
źródło
Używam tego do kodów pocztowych, szybko i łatwo.
źródło
Używając tego kodu, nie możesz używać przycisku „BackSpace” w przeglądarce Mozilla Firefox, możesz używać klawisza Backspace tylko w przeglądarce Chrome 47 && event.charCode <58; "pattern =" [0-9] {5} "wymagane>
źródło
http://www.texotela.co.uk/code/jquery/numeric/ numeryczne napisy dla Leo Vũ za wspomnienie o tym i oczywiście TexoTela. ze stroną testową.
źródło
Lepiej jest dodać „+” do warunku REGEX, aby akceptować wiele cyfr (nie tylko jedną):
<input type="text" name="your_field" pattern="[0-9]+">
źródło
Jednym ze sposobów mogłoby być utworzenie tablicy dozwolonych kodów znaków, a następnie użycie
Array.includes
funkcji w celu sprawdzenia, czy wprowadzony znak jest dozwolony.Przykład:
źródło
Wystarczająco proste?
źródło