obecnie mam następujący kod
<input type="number" />
wychodzi na coś takiego
Małe elementy selektora po prawej stronie pozwalają, aby liczba stała się ujemna. Jak temu zapobiec?
Mam wątpliwości co do używania type="number"
, powoduje więcej problemów niż rozwiązywania, i tak sprawdzę zdrowie psychiczne, więc czy powinienem po prostu wrócić do używania type="text"
?
Odpowiedzi:
Dodaj do
min
atrybutuźródło
min="0.000001"
pomoże w większości przypadków. Ponad 6 miejsc po przecinku, JavaScript skonwertuje go na format wykładniczy.Znalazłem inne rozwiązanie, aby zapobiec liczbie ujemnej.
źródło
oninput="validity.valid||(value='');"
powstrzymuje jedną od wpisywania liczbTo zależy od tego, jak precyzyjnie chcesz być. Jeśli chcesz zaakceptować tylko liczby całkowite, niż:
Jeśli chcesz liczb zmiennoprzecinkowych, na przykład, dwie cyfry po przecinku:
źródło
max
wartości.Możesz wymusić, aby dane wejściowe zawierały tylko dodatnią liczbę całkowitą, dodając
onkeypress
doinput
znacznika.Tutaj
event.charCode >= 48
zapewnia, że zwracane są tylko liczby większe lub równe 0, amin
znacznik zapewnia, że możesz dojść do co najmniej 1, przewijając pasek wprowadzania.źródło
Możesz użyć następujących opcji, aby
type="number"
zaakceptować tylko liczby dodatnie:źródło
Można zapobiec wprowadzaniu wartości ujemnych w postaci liczbowej, wykonując następujące czynności:
źródło
Próbować
<input type="number" pattern="^[0-9]" title='Only Number' min="1" step="1">
źródło
W przypadku potrzeby wprowadzania tekstu wzór działa również
źródło
Nie mogę znaleźć idealnego rozwiązania, ponieważ niektóre prace dotyczą wprowadzania, ale nie kopiowania i wklejania, niektóre są na odwrót. To rozwiązanie działa dla mnie. Zapobiega wpisywaniu liczby ujemnej, wpisywaniu „e”, kopiowaniu i wklejaniu tekstu „e”.
stworzyć funkcję.
dodaj te właściwości do danych wejściowych. te dwa zapobiegają kopiowaniu i wklejaniu tekstu nieliczbowego, w tym „e”. musisz mieć oba razem, aby zadziałały.
Jeśli korzystasz z Vue , możesz odnieść się do tej odpowiedzi tutaj . Wyodrębniłem go do mixinu, który można ponownie wykorzystać.
źródło
dodaj ten kod do swojego typu wejściowego;
na przykład:
źródło
Innym rozwiązaniem jest użycie Js, aby było dodatnie (opcja min może być wyłączona i nie jest poprawna, gdy użytkownik wpisze coś). Można również użyć ujemnego, jeśli nie jest konieczne i zdarzenia („keydown”)!
źródło
Zależy to od tego, czy chcesz pole int czy float. Oto jak będą wyglądać dwa:
Do pola int dołączona jest poprawna walidacja, ponieważ jego min wynosi 1. Pole zmiennoprzecinkowe przyjmuje jednak 0; aby sobie z tym poradzić, możesz dodać jeszcze jeden walidator ograniczeń :
JSFiddle tutaj.
Zauważ, że żadne z tych rozwiązań całkowicie nie uniemożliwia użytkownikowi próby wpisania nieprawidłowego wejścia, ale możesz zadzwonić
checkValidity
lubreportValidity
dowiedzieć się, czy użytkownik wpisał prawidłowe dane wejściowe.Oczywiście nadal powinieneś mieć sprawdzanie poprawności po stronie serwera, ponieważ użytkownik zawsze może zignorować sprawdzanie poprawności po stronie klienta.
źródło
Spróbuj tego:
null
inegitive
wartości.źródło
Jeśli spróbujesz wprowadzić liczbę ujemną, zdarzenie onkeyup blokuje to, a jeśli użyjesz strzałki na numerze wejściowym, zdarzenie onblur rozwiązuje tę część.
źródło
źródło
Dzięki typowi tekstu możesz użyć tego do lepszej weryfikacji,
źródło
Spróbuj tego:
źródło