Mam następujący element wejściowy HTML5:
<input type="number">
Dlaczego to wejście pozwala na wpisanie znaku „e” w polu wprowadzania? Nie można wprowadzić innego znaku alfabetu (zgodnie z oczekiwaniami)
Korzystanie z chrome v. 44.0.2403.107
Aby zobaczyć, co mam na myśli: http://www.w3schools.com/html/tryit.asp?filename=tryhtml_input_number
.
wiele razy w niektórych przeglądarkach.Odpowiedzi:
Ponieważ dokładnie tak mówi specyfikacja , że powinna działać. Wprowadzane liczby mogą przyjmować liczby zmiennoprzecinkowe , w tym symbole ujemne i znak
e
lubE
(gdzie wykładnikiem jest liczba po znakue
lubE
):źródło
e
jest przydatne do zagęszczania dużych liczb, które w innym przypadku byłyby uciążliwe do wpisania . Jako trywialny przykład:2e2 = 2*10^2 = 200
e
oznacza wykładnik potęgi.Możemy to uczynić tak prostym, jak poniżej
Zaktualizowana odpowiedź
możemy uczynić to jeszcze prostszym, jak sugeruje @ 88 MPG
źródło
return event.keyCode !== 69
ponieważ pozwala uniknąć niepotrzebnego operatora trójskładnikowego. Nie polecałbym również wkładania.e
lubE
w polu chociażTyp liczbowy wejściowy HTML pozwala na „e / E”, ponieważ „e” oznacza wykładniczy, który jest symbolem numerycznym.
Przykład 200000 można również zapisać jako 2e5. Mam nadzieję, że to pomoże ci podziękować za pytanie.
źródło
Najlepszy sposób, aby wymusić użycie tylko liczby złożonej z cyfr:
pozwala to uniknąć „e”, „-”, „+”, „.” ... wszystkie znaki, które nie są liczbami!
Aby zezwolić tylko na klawisze numeryczne:
ale zaakceptuj „Backspace” (keyCode: 8) i „Delete” (keyCode: 46) ...
źródło
źródło
Aby ukryć zarówno literę, jak
e
i znak minus,-
wystarczy:źródło
Używając kątowego, możesz to zrobić, aby ograniczyć się do wprowadzania e, +, -, E
źródło
Kątowy; z przestarzałym ostrzeżeniem IDE keyCode
Funkcjonalnie taki sam jak odpowiedź rinku, ale z zapobieganiem ostrzeżeniom IDE
źródło