maxlength
Atrybut nie działa z <input type="number">
. Dzieje się tak tylko w Chrome.
<input type="number" class="test_css" maxlength="4" id="flight_number" name="number"/>
źródło
maxlength
Atrybut nie działa z <input type="number">
. Dzieje się tak tylko w Chrome.
<input type="number" class="test_css" maxlength="4" id="flight_number" name="number"/>
Jeśli wartość tego typu atrybutu jest
text
,search
,password
,tel
, czyurl
ten atrybut określa maksymalną liczbę znaków w Unicode (punktów kodowych), które użytkownik może wprowadzić; dla innych typów kontroli jest ignorowany.
maxlength
Jest więc ignorowany <input type="number">
przez projekt.
W zależności od potrzeb możesz użyć atrybutów min
i max
zgodnie z sugestią zawartą w jego odpowiedzi ( uwaga : określi to tylko ograniczony zakres, a nie rzeczywistą długość znaku wartości, chociaż od -9999 do 9999 obejmie wszystkie 0-4 cyfry) lub możesz użyć zwykłego wprowadzania tekstu i wymusić sprawdzenie poprawności w polu za pomocą nowego pattern
atrybutu:
<input type="text" pattern="\d*" maxlength="4">
type="number"
jest to nowy typ ze specyfikacji HTML 5. Jeśli przeglądarka testujesz w nie rozpoznajetype="number"
będzie go traktować jakotype="text"
który ma przestrzegaćmaxlength
atrybut. To może wyjaśniać zachowanie, które widzisz.type=number
przez ustawieniemax
atrybutu. Ten atrybut ogranicza tylko liczbę wybraną za pomocą pokrętła wejściowego.\d*
tu jestregex
i wzorowanie jest niezwykle kreatywne. Ale w telefonach, nie inaczej,Android
lubiOS
, to jesttext
wejście, więc powoduje złeUX
.Maksymalna długość nie będzie działać
<input type="number"
w najlepszy znany mi sposób, aby użyćoninput
zdarzenia w celu ograniczenia maksymalnej długości . Zobacz poniższy kod.źródło
||0/1
oninput="this.value=this.value.slice(0,this.maxLength)"
powinno działać<input type="number">
stackoverflow.com/questions/18510845/...Wielu facetów opublikowało
onKeyDown()
zdarzenie, które w ogóle nie działa, tzn. Nie można go usunąć po osiągnięciu limitu. Więc zamiastonKeyDown()
używaćonKeyPress()
i działa idealnie dobrze.Poniżej działa kod:
źródło
number
typu danych wejściowych HTML5Mam na to dwa sposoby
Po pierwsze: użyj
type="tel"
, będzie działać jaktype="number"
w telefonie komórkowym i zaakceptuje maxlength:Po drugie: użyj trochę JavaScript:
źródło
Możesz użyć atrybutów min i max .
Poniższy kod robi to samo:
źródło
9999
którą użytkownik może ręcznie wpisać w liczbie przekraczającej tę długość.Zmień typ wprowadzania na tekst i użyj zdarzenia „oninput”, aby wywołać funkcję:
Teraz użyj Javascript Regex, aby odfiltrować dane wejściowe użytkownika i ograniczyć je tylko do liczb:
Demo: https://codepen.io/aslami/pen/GdPvRY
źródło
Kiedyś wpadłem na ten sam problem i znalazłem to rozwiązanie w odniesieniu do moich potrzeb. To może komuś pomóc.
Happy Coding :)
źródło
Możesz tego również spróbować w przypadku wprowadzania numerycznego z ograniczeniem długości
źródło
tel
wejściowe będą automatycznie sprawdzane jako takie, aw niektórych dziwnych przypadkach wiodące litery0
s zostaną zmienione na1
s.DEMO - JSFIDDLE
źródło
Oto moje rozwiązanie z jQuery ... Musisz dodać maxlength do swojego typu wejściowego = liczba
I obsługuj kopiowanie i wklejanie:
Mam nadzieję, że to komuś pomoże.
źródło
this.value = this.value.slice(0, this.maxLength);
Czy uważasz, że ma to jakiś problem? Jak dotąd nie znalazłem. Obejmuje także wklejony tekst.Z mojego doświadczenia
maxlength
wynika, że większość problemów, w których ludzie pytają, dlaczego jest ignorowana, polega na tym, że użytkownik może wprowadzić więcej niż „dozwoloną” liczbę znaków.Jak stwierdzono w innych komentarzach,
type="number"
dane wejściowe nie mająmaxlength
atrybutu, a zamiast tego mają atrybutmin
imax
.Aby pole ograniczyło liczbę znaków, które można wstawić, jednocześnie pozwalając użytkownikowi wiedzieć o tym przed przesłaniem formularza (w przeciwnym razie przeglądarka powinna określić wartość> max), musisz (przynajmniej na razie) dodać słuchacz pola.
Oto rozwiązanie, z którego korzystałem w przeszłości: http://codepen.io/wuori/pen/LNyYBM
źródło
Wiem, że jest już odpowiedź, ale jeśli chcesz, aby Twoje dane wejściowe zachowywały się dokładnie tak, jak
maxlength
atrybut lub jak najbliżej, użyj następującego kodu:źródło
Chrome (technicznie rzecz biorąc, Blink) nie wdroży maxlength dla
<input type="number">
.W specyfikacji HTML5 podano , że maksymalna długość ma zastosowanie tylko do typów tekstu, adresu URL, adresu e-mail, wyszukiwania, tel i hasła.
źródło
Absolutnym rozwiązaniem, które niedawno wypróbowałem, jest:
źródło
Sprawię, że będzie to szybkie i łatwe do zrozumienia!
Zamiast maxlength for
type='number'
(maxlength ma na celu określenie maksymalnej liczby liter ciągu wtext
typie), użyjmin=''
imax=''
.Twoje zdrowie
źródło
<input type="number">
jest po prostu ... wprowadzeniem liczby (aczkolwiek nie jest konwertowane z ciągu znaków na zmiennoprzecinkowe za pomocą Javascript).Domyślam się, że nie ogranicza znaków do wprowadzania klucza przez
maxLength
użytkownika, inaczej użytkownik może utknąć w „pułapce klawiszy”, jeśli na początku zapomniałby o przecinku (spróbuj wstawić.
indeks1
po osiągnięciu<input type"text">
wartości attr „maxLength” ). Będzie to jednak sprawdzane po przesłaniu formularza, jeśli ustawiszmax
atrybut.Jeśli próbujesz ograniczyć / zweryfikować numer telefonu, użyj wartości
type="tel"
attr /. PodlegamaxLength
attr i wyświetla tylko klawiaturę numeryczną (w nowoczesnych przeglądarkach) i możesz ograniczyć wprowadzanie do wzorca (tjpattern="[0-9]{10}"
.).źródło
Dla użytkowników React
Wystarczy wymienić 10 na wymaganą maksymalną długość
źródło
maxlenght - tekst wejściowy
przy użyciu jQuery:
maxlenght - numer typu wejścia
JS
HTML
źródło