Support to <input type=number>
jest nadal bardzo ograniczona, niekompletne i b brzydki.
Na przykład, nie ma obsługi w IE 10 i Firefox 19. Na nich element powraca do elementu <input type=text>
, co oznacza, że dowolny ciąg jest akceptowany jako wejściowy i przekazywany do serwera jako taki, bez sprawdzania .
W przeglądarkach, które go obsługują, takich jak Chrome, zachowanie jest różne i prawdopodobnie będzie się różnić, ponieważ HTML5 CR definition celowo pozostawia to otwarte: przeglądarka jest zobowiązana do dostarczenia widżetu do wprowadzania liczbowego i zagwarantowania, że dane ostatecznie wysłane do serwera są poprawne zgodnie z atrybutami elementu (w podanym zakresie itp.).
W praktyce implementacja zależy od ustawienia narodowego przeglądarki i nie można tego kontrolować jako autora. Oznacza to, że przeglądarka może zaakceptować 88,2 lub zaakceptować 88,2 (i wewnętrznie przekonwertować ją do 88,2), lub może zaakceptować oba, lub może zasadniczo zaakceptować dane wejściowe tylko w hieroglifach (i wewnętrznie przekonwertować je do Forma kanoniczna). Może nawet przeanalizować dane wprowadzane przez użytkownika, aby wszystkie dodatkowe znaki zostały po prostu usunięte, co oznacza, że 88FOO i 88.2 mogą zostać obcięte do 88, gdy przecinek jest separatorem dziesiętnym.
To, co dzieje się w twoim przypadku, jest trudne do podjęcia, ponieważ przeglądarki i platformy nie zostały opisane i nie jest jasne, co otrzymuje serwer. Ważne jest jednak to, że nie można w ogóle polegać na <input type=number>
. Można go używać w kontrolowanym środowisku, w którym każdy używa tej samej wersji tej samej przeglądarki w tym samym systemie operacyjnym, włącznie z wersją językową i ustawieniami narodowymi. W przeciwnym razie użyj <input type=text>
do wprowadzania liczbowego i parsuj serwer po stronie wejściowej i opcjonalnie wstępnie sprawdź po stronie klienta, i upewnij się, że poinformowałeś użytkownika o oczekiwanym formacie danych wejściowych (takim jak przecinek dziesiętny kontra przecinek dziesiętny).
wierzę '' przyjmuje tylko liczby całkowite jak prawidłowych wartości. Dozwolone cyfry dziesiętne to prawdopodobnie nieprawidłowe/niezatwierdzone sprawdzanie poprawności przez przeglądarkę. –
Uwaga: Europejczycy używają przecinka do znaku dziesiętnego. Czy możesz wymusić gdzieś ustawienie kulturowe? –
Wiem, że używamy różnych znaków, ale czy nie ma sposobu, aby NIE usunąć kropki? Jeśli drugi facet wchodzi w 88.2, pojawia się jako 882, co jest naprawdę denerwujące. –