1,5 czy 1.5? Liczba w formularzu potrzebuje zasad
Wprowadzanie liczb w formularzu: przecinek i kropka, krok względem minimum, wklejanie, puste pole i precyzja bez cichego zmieniania wartości.

W tym artykule
Przecinek ma skromną posadę: oddzielać część całkowitą od ułamka. W źle zaprojektowanym formularzu dostaje awans na szefa odrzucania zamówień. Klient wpisuje „1,5”, strona żąda „prawidłowej liczby”, a nikt nie mówi, o co właściwie poszło. Półtora pozostaje półtora. Tylko system ma inne zdanie.
Przyjmijmy fikcyjny sklep z taśmami dekoracyjnymi ciętymi na długość. Klient podaje wymiar w metrach, sklep dopuszcza określony krok cięcia, a formularz przekazuje zaakceptowaną długość do zamówienia. Interesuje nas pojedyncze pole, zanim powstanie wynik czy cena. Jeśli właśnie ono zmieni znaczenie wpisu, dalsze obliczenia mogą być bezbłędne i nadal dotyczyć niewłaściwego zamówienia.
Dlatego projekt interakcji Aeneia Design obejmuje także ustalenie reguł wejścia. Makieta z cyfrą „1” nie odpowiada na pytanie, czy klient może wpisać ułamek, wkleić wartość z jednostką albo na chwilę usunąć zawartość. Te zachowania trzeba ustalić przed odbiorem.
Najpierw odczytaj zamiar, potem poprawiaj zapis
Zacznij od etykiety: „Długość w metrach” mówi więcej niż „Wartość”. Jednostka powinna być widoczna poza przykładem w pustym polu, bo przykład znika podczas wpisywania. Jeśli użytkownik ma podać centymetry, nie pokazuj obok niezmiennego „m”. Różnicy skali nie naprawi elegancka typografia.
Następnie określ przyjęty zapis liczby. W polskiej wersji klient spodziewa się przecinka dziesiętnego. Może jednak wkleić liczbę z programu używającego kropki. Zdecyduj, które postacie przyjmujesz i jak przedstawiasz ich interpretację. Nie usuwaj automatycznie wszystkich przecinków: z „1,5” może wtedy powstać „15”. To już inny kawałek taśmy, choć kod nadal widzi liczbę.
Dokumentacja NumberParser w React Aria opisuje odczytywanie liczb zależnie od ustawień języka, regionu i oczekiwanego formatu. Rozróżnia również sprawdzanie wpisu częściowego od przetwarzania gotowej wartości. Nie jest to mechanizm dowolnego zgadywania, czy użytkownik miał na myśli jednostkę, procent albo inny rodzaj danych.
Własne reguły też muszą mieć granice. Jeśli akceptujesz pojedynczą kropkę jako separator ułamka, pokaż po zatwierdzeniu jednoznaczny wynik w ustalonym zapisie. Jeśli wklejona wartość zawiera różne separatory i nie da się jej bezpiecznie zinterpretować, poproś o poprawę. Pytanie o właściwy wymiar kosztuje mniej niż pewne siebie zaakceptowanie innej długości.
W próbie wklej także „1,234”. Przed przyjęciem takiego tekstu trzeba wiedzieć, czy przecinek oznacza ułamek, czy grupowanie tysięcy w źródle. Nie wybieraj za klienta tylko dlatego, że obie interpretacje dają poprawne liczby. W naszym sklepie jednostka i reguła mają ograniczyć wybór, a w razie niejasności klient powinien zobaczyć pytanie o konkretną długość.
Pozwól też porównać wpis z przyjętym wynikiem: „Odczytana długość: 1,234 m” daje inną informację niż sam brak czerwonego komunikatu. Jeśli oferta dopuszcza tylko dwa miejsca po separatorze, dalej potrzebna jest decyzja o poprawie lub zaokrągleniu. Odczytanie liczby nie potwierdza jeszcze, że mieści się ona w warunkach zamówienia.
Zwróć uwagę na zmianę wersji językowej. Liczba zapisana wcześniej nie powinna zmieniać wielkości tylko dlatego, że formularz przełączył sposób prezentacji. W polu może pojawić się inny separator, ale półtora metra ma pozostać tą samą ilością. Projekt wersji językowych i ich odbioru musi uwzględniać również takie dane.
To inna sytuacja niż cyfry w adresie lub identyfikatorze. „0012” może być znaczącym zapisem, który trzeba zachować w całości, a „12B” nie jest liczbą do obliczenia. W tekście o międzynarodowym formularzu adresowym pokazujemy, dlaczego pozornie numerycznego pola nie wolno automatycznie traktować jak ilości.
Krok nie oznacza liczby miejsc po przecinku
Sklep może sprzedawać taśmę co pięć centymetrów. Wtedy dozwolone wartości są związane z konkretnym przyrostem. Sam zapis z dwoma miejscami po przecinku nie opisuje tej reguły. „1,23” mieści się w dwóch miejscach, ale nie musi odpowiadać oferowanemu cięciu. „1,50” i „1,5” mogą natomiast oznaczać tę samą długość.
Nie myl również dopisania zera z zaokrągleniem. Pokazanie 1,5 jako 1,50 zmienia zapis, ale nie wielkość. Zastąpienie 1,246 przez 1,25 zmienia wielkość, choć różnica może wyglądać niewinnie. Jeżeli taśma ma zostać przycięta zgodnie z przyjętym wymiarem, klient musi wiedzieć, która operacja zaszła. Przycisk potwierdzenia powinien dotyczyć widocznej i zrozumiałej wartości.
Uzgodnij też, czy ponowne otwarcie pola pokazuje wszystkie zapisane cyfry, czy skrócony wynik. Nie zostawiaj ukrytej dokładności, która wraca dopiero przy kolejnym przeliczeniu. Dla naszej umownej oferty rozwiązaniem może być zapisanie wyłącznie potwierdzonej długości zgodnej z krokiem. Inny produkt może wymagać zachowania pomiaru osobno; to świadoma decyzja o danych, a nie detal typografii.
MDN opisuje atrybut step jako określenie kroku i dopuszczalnych wartości względem podstawy. W liczbowym polu HTML tę podstawę wyznacza min, następnie value, a przy braku obu zero. Domyślny krok dla pola number wynosi jeden; ustawienie any usuwa ograniczenie kroku, zachowując inne ograniczenia.
Przełóż to na decyzję sklepu. Przy podstawie 0,10 m i kroku 0,05 m otrzymujesz między innymi 0,10, 0,15 oraz 0,20 m. W innym, umownym wariancie minimum wynosi 0,12 m, a krok nadal 0,05 m: kolejne wartości to 0,12, 0,17 i 0,22 m. Ten drugi wariant nie został sprawdzony w realnym sklepie; pokazuje wyłącznie arytmetyczny wpływ punktu początkowego.

Jeśli właściciel oczekuje innego szeregu, trzeba zmienić regułę, a nie jedynie podpis przy polu. Powiąż wymaganie biznesowe z konfiguracją i sprawdź wartość przy samym minimum. W przeciwnym razie projektant może uważać, że dopuszczono określone długości, a przeglądarka będzie sprawdzać inny zestaw.
Przycisk plus powinien również mieć zrozumiały skutek. Czy zwiększa długość o dozwolony krok? Co robi po ręcznym wpisaniu wartości pomiędzy krokami? Wskaż zachowanie zamiast pozostawiać je przypadkowi. Nie zmieniaj „1,23” na „1,25” bez pokazania korekty i ustalenia, czy klient właśnie tę długość chce przyjąć.
Większy kontekst obliczeń rozwija projekt kalkulatora z jednostkami i założeniami. Tutaj odbierasz wcześniejszy etap: czy do tej reguły trafi dokładnie taka liczba, jaką użytkownik świadomie zatwierdził. Poprawność wzoru nie rekompensuje zmienionego wejścia.
Człowiek ma prawo być w połowie liczby
Żeby zmienić „1,5” na „2,5”, użytkownik może zaznaczyć całą zawartość i zacząć od pustego pola. Przez chwilę nie ma w nim poprawnej liczby. To zwykły etap edycji, a nie gotowa decyzja o zerowej długości. Nie wstawiaj automatycznie zera, z którym trzeba będzie walczyć przy kolejnym znaku.
Podobnie samo „1,” może być niedokończonym zamiarem wpisania ułamka. Zbyt szybka poprawka do „1” potrafi przesunąć kursor i utrudnić dalszą edycję. Określ moment sprawdzania oraz moment zatwierdzenia. Stan wpisywania powinien dać się dokończyć, a gotowa wartość spełniać uzgodnione zasady.
Nie mieszaj pustej odpowiedzi z zerem. W sklepie brak długości oznacza brak decyzji; zero może być odrzuconą wielkością albo osobną czynnością, zależnie od projektu. Jeśli pole jest wymagane, poproś o długość po próbie kontynuowania. Nie zapisuj zera tylko dlatego, że łatwiej przesłać liczbę niż informację o braku odpowiedzi.
Jeśli formularz zaczyna od proponowanego jednego metra, nazwij tę propozycję i pokaż ją także przed zatwierdzeniem. Przejście do kolejnego kroku nie może ukrywać domyślnego wymiaru wśród danych. Po usunięciu wartości pozwól klientowi wpisać własną; automatyczne przywracanie jednego metra po każdym skasowaniu utrudni mu zmianę zamiaru.
Wskaż także moment zapisu. Opuszczenie pola może sprawdzać treść, ale nie musi zapisywać zamówienia. Gdy poprawka jest wykonywana w istniejącym rekordzie, potrzebna jest czytelna granica opisana w tekście o edycji wartości w miejscu. Widoczna nowa długość nie dowodzi jeszcze, że sklep ją przyjął.
Na telefonie sprawdź dostępne znaki. MDN wyjaśnia inputmode jako wskazówkę doboru klawiatury ekranowej, która sama nie narzuca poprawności wartości. Tryb decimal przewiduje separator dziesiętny zależny od ustawień; urządzenie może pokazywać lub pomijać minus. To opis możliwości, nie gwarancja identycznej klawiatury wszędzie.
Dobierz więc klawiaturę do rzeczywiście potrzebnych znaków i przejdź zadanie na uzgodnionych urządzeniach. Jeżeli liczba ujemna ma sens, sprawdź, jak ją wprowadzić. Jeśli nie ma sensu, nazwij ograniczenie. Nie traktuj ukrytego minusa jako jedynego zabezpieczenia: wartość może przecież zostać wklejona.
Sprawdź również zwykłe poprawianie klawiaturą: przejście do pola, zaznaczenie całości, zastąpienie wartości i odejście bez zatwierdzenia. Jeśli strzałki zmieniają długość, ich skutek powinien odpowiadać regule kroku. Jeżeli przewijanie strony nad aktywnym polem w danym rozwiązaniu wpływa na liczbę, oceń, czy użytkownik zauważa zmianę i może ją łatwo cofnąć. Sprawdź to na wybranym polu i urządzeniu; nie zakładaj jednakowego zachowania wszędzie.
Odbierz wartość, którą zapisano
Wklejenie ujawnia założenia, których nie widać przy spokojnym wpisywaniu. Przygotuj „1,5”, „1.5”, odstęp przed liczbą oraz zapis z jednostką. Zdecyduj osobno, czy jednostkę wolno przyjąć, czy trzeba ją usunąć ręcznie. Nie dopisuj automatycznego przeliczania tylko dlatego, że w schowku pojawiło się „150 cm”. To dodatkowa funkcja z własnymi regułami.
Na odbiór przygotuj dla każdego takiego wejścia oczekiwaną odpowiedź: przyjęty wymiar albo konkretny komunikat. Nie wystarczy lista tekstów do wklejenia bez ustalenia wyniku. Projektant i wykonawca mogliby wtedy uznać dwa różne zachowania za poprawne. W osobnej próbie wyślij dane niespełniające reguły do zaplecza formularza i sprawdź ich odrzucenie; zielona ramka w przeglądarce nie może zastępować kontroli po stronie przyjmującej zamówienie.
Sprawdź również wartość z większą liczbą cyfr po separatorze niż przewiduje oferta. Jeśli formularz zaokrągla, pokaż efekt przed przyjęciem. Jeśli odrzuca, zostaw tekst do poprawy i wyjaśnij wymaganą precyzję. Komunikat powinien powiedzieć, co zrobić z konkretnym wpisem, zamiast prosić o enigmatyczną „poprawną wartość”.
W podsumowaniu zamówienia odczytaj długość razem z jednostką. Potem ponownie otwórz zapisane dane i porównaj je z zatwierdzonym wynikiem. W koszyku z poprawianiem ilości dochodzą dalsze zależności, lecz już pojedyncze pole powinno zachować uzgodnioną wielkość.
Na koniec próby zrób celową korektę: wpisz niedozwoloną długość, przeczytaj komunikat i popraw ją bez czyszczenia formularza. Jeśli da się to zrobić spokojnie, przecinek wraca na swoją skromną posadę. Zamówienia znów odrzuca właściwa reguła, a nie urażony znak interpunkcyjny.

