Tworzę stronę internetową, na której mam wejściowe pole tekstowe, w którym chcę dopuścić tylko znaki numeryczne, takie jak (0,1,2,3,4,5 ... 9) 0-9.
Jak mogę to zrobić za pomocą jQuery?
jquery
html
validation
numeric
Prashant
źródło
źródło
Odpowiedzi:
Uwaga: to jest zaktualizowana odpowiedź. Komentarze poniżej odnoszą się do starej wersji pomieszanej z kodami klawiszy.
jQuery
Wypróbuj sam na JSFiddle .
Nie ma w tym celu natywnej implementacji jQuery, ale możesz filtrować wartości wejściowe tekstu
<input>
za pomocą następującejinputFilter
wtyczki (obsługuje kopiowanie + wklejanie, przeciąganie + upuszczanie, skróty klawiaturowe, operacje w menu kontekstowym, klawisze bez możliwości wpisywania, pozycja karetki, różne układy klawiatury i wszystkie przeglądarki od IE 9 ):Teraz możesz użyć
inputFilter
wtyczki, aby zainstalować filtr wejściowy:Zobacz demo JSFiddle, aby uzyskać więcej przykładów filtrów wejściowych. Pamiętaj też, że nadal musisz przeprowadzić weryfikację po stronie serwera!
Czysty JavaScript (bez jQuery)
jQuery nie jest tak naprawdę potrzebny, możesz zrobić to samo z czystym JavaScript. Zobacz tę odpowiedź .
HTML 5
HTML 5 ma natywne rozwiązanie z
<input type="number">
(patrz specyfikacja ), ale zauważ, że obsługa przeglądarki jest różna:step
,min
imax
atrybuty.e
iE
pole. Zobacz także to pytanie .Wypróbuj sam na w3schools.com .
źródło
Oto funkcja, której używam:
Następnie możesz dołączyć go do swojej kontroli, wykonując:
źródło
return this.each(function()
?each
fromreturn this.each(function()
pozwala na wiele obiektów, jak powiedział HaggleLad, areturn
część polega na zwróceniu obiektu jQuery z powrotem do dzwoniącego, aby umożliwić tworzenie łańcuchów, takich jak$("input[type='text'").ForceNumericOnly().show()
Inline:
Dyskretny styl (z jQuery):
źródło
onkeyup="if (/\D/g.test(this.value)) this.value = this.value.replace(/\D/g,'')"
./[^0-9]|^0+(?!$)/g
zapobiec wiodącej serii zer.Możesz po prostu użyć prostego wyrażenia regularnego JavaScript do testowania znaków czysto numerycznych:
Zwraca true, jeśli dane wejściowe są numeryczne lub false, jeśli nie.
lub dla kodu zdarzenia, proste użycie poniżej:
źródło
Możesz użyć zdarzenia wejściowego takiego jak to:
Ale czym jest ten przywilej kodu?
źródło
decimal
przedziałem od0.0
do24.0
Nie jestem w stanie pozwolić, aby dostała się do.
this.value = Number(this.value.replace(/\D/g, ''));
Krótko i słodko - nawet jeśli to nigdy nie przyciągnie uwagi po ponad 30 odpowiedziach;)
źródło
Użyj funkcji JavaScript isNaN ,
if (isNaN (document.getElementById ('inputid'). val ()))Aktualizacja: A tutaj fajny artykuł mówiący o tym, ale używając jQuery: Ograniczanie wprowadzania danych w polach tekstowych HTML do wartości liczbowych
źródło
document.getElementById('inputid').val()
koleś ... to wciąż jquery..val()
to kwestia jquery. use.value
isNaN
pojedynkę jest złym pomysłem ze względu na przymus typu JavaScript.decimal
przedziału od0.0
do24.0
Nie jestem w stanie pozwolić na wejście do.
Źródło: http://snipt.net/GerryEng/jquery-making-textfield-only-accept-numeric-values
źródło
Używam tego w naszym wewnętrznym wspólnym pliku js. Po prostu dodaję klasę do każdego wejścia, które wymaga tego zachowania.
źródło
Dla mnie jest to prostsze
źródło
this.value.replace(/[^0-9\.]/g,'');
wymagań OP 0-9Dlaczego tak skomplikowane? Nie potrzebujesz nawet jQuery, ponieważ istnieje atrybut wzorca HTML5:
Fajne jest to, że wyświetla klawiaturę numeryczną na urządzeniach mobilnych, co jest o wiele lepsze niż używanie jQuery.
źródło
Możesz zrobić to samo, korzystając z tego bardzo prostego rozwiązania
Odniosłem się do tego łącza dla rozwiązania. Działa idealnie !!!
źródło
decimal
przedziałem od0.0
do24.0
Nie jestem w stanie pozwolić na wejście do.
Możesz spróbować wprowadzić numer HTML5 :
W przypadku niezgodnych przeglądarek istnieją awarie Modernizr i Webforms2 .
źródło
Atrybut wzorca w HTML5 określa wyrażenie regularne, względem którego sprawdzana jest wartość elementu.
Uwaga: Atrybut wzorca działa z następującymi typami wprowadzania: tekst, wyszukiwanie, adres URL, tel, e-mail i hasło.
[0–9] można zastąpić dowolnym warunkiem wyrażenia regularnego.
{1,3} reprezentuje minimum 1, a maksymalnie 3 cyfry można wprowadzić.
źródło
decimal
przedziałem od0.0
do24.0
Nie jestem w stanie pozwolić na wejście do.
Coś dość prostego przy użyciu jQuery.validate
źródło
funkcja suppressNonNumericInput (event) {
źródło
decimal
przedziałem od0.0
do24.0
Nie jestem w stanie pozwolić na wejście do.
Doszedłem do bardzo dobrego i prostego rozwiązania, które nie przeszkadza użytkownikowi wybierać tekstu ani kopiować wklejania, jak robią to inne rozwiązania. Styl jQuery :)
źródło
Możesz użyć tej funkcji JavaScript:
Możesz powiązać go z polem tekstowym w następujący sposób:
Używam powyższego w produkcji i działa idealnie, i jest to przeglądarka. Co więcej, nie zależy od jQuery, więc możesz powiązać go z polem tekstowym za pomocą wbudowanego JavaScript:
źródło
Myślę, że to pomoże wszystkim
źródło
if(event.which!=8 && event.which!=0 && (event.which<48 || event.which>57) && (event.which<96 || event.which>105)) return;
Napisałem mój na podstawie powyższego postu @ user261922, nieco zmodyfikowany, aby można było wybrać wszystkie, tab i obsługiwać wiele pól „tylko numer” na tej samej stronie.
źródło
Oto szybkie rozwiązanie, które stworzyłem jakiś czas temu. możesz przeczytać więcej na ten temat w moim artykule:
http://ajax911.com/numbers-numeric-field-jquery/
źródło
Chcesz zezwolić na zakładkę:
źródło
Oto odpowiedź, która korzysta z fabryki widgetów interfejsu użytkownika jQuery. Możesz łatwo dostosować, które postacie są dozwolone.
Pozwoliłoby to na liczby, znaki liczbowe i kwoty w dolarach.
źródło
To wydaje się nie do złamania.
źródło
Musisz upewnić się, że klawiatura numeryczna i klawisz tab również działają
źródło
Chciałem trochę pomóc i stworzyłem moją wersję,
onlyNumbers
funkcję ...Wystarczy dodać tag wejściowy „... input ... id =" price "onkeydown =" return onlyNumbers (event) "..." i gotowe;)
źródło
Chciałbym również odpowiedzieć :)
To wszystko ... tylko liczby. :) Prawie może działać tylko z „rozmyciem”, ale ...
źródło
Prostym sposobem sprawdzenia, czy wprowadzana wartość jest liczbą, jest:
źródło
Wystarczy zastosować tę metodę w Jquery, aby sprawdzić poprawność pola tekstowego i zaakceptować tylko numer.
Wypróbuj to rozwiązanie tutaj
źródło
Możesz spróbować wprowadzić numer HTML5:
Ten element znacznika wejściowego przyjąłby teraz wartość tylko od 0 do 9, ponieważ atrybut min ustawiony jest na 0, a atrybut max ustawiony na 9.
Więcej informacji na stronie http://www.w3schools.com/html/html_form_input_types.asp
źródło