• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Input Hidden a Text - różnica w zachowaniu

VPS Starter Arubacloud
0 głosów
280 wizyt
pytanie zadane 25 września 2019 w HTML i CSS przez Bartłomiej Bolesta Obywatel (1,630 p.)
Aby sobie ułatwić wysłanie formularza, którego elementy byłyby bardzo rozrzucone po stronie zrobiłem pola input hidden w formie w które wstawiam te same wartości, którymi manipuluje użytkownik w polach input text.

Póki dla testów miałem hiddeny jako text wszystko było ok. Ale gdy zmieniłem na hiddeny zauważyłem dziwną rzecz.

W momencie, gdy cofam stronę po wysłaniu formularza dane w inputach text pozostają takie jakie były wpisane przez użytkownika, zaś w inputach hidden się zerują (wracają do postaci value = "").

Przez to użytkownik widzi wpisane uprzednio wartości, ale gdyby chcieć znów kliknąć przesłanie z takimi samymi danymi (jak najbardziej jest to przeze mnie dopuszczalne w tym wypadku) to wywali błąd, że dane pola nie zostały uzupełnione i należy to zrobić.

Co więcej patrząc do zakładki "elements" przeglądarki, typ hidden podczas wstawiania wartości, widać, że się zmienia i w tej zakładce wyświetla się jako np. value="1", ale typ text się nie zmienia wyświetla się jedynie jako value.

Skąd tak różnica w obu typach?

1 odpowiedź

+1 głos
odpowiedź 25 września 2019 przez Comandeer Guru (605,680 p.)
wybrane 25 września 2019 przez Bartłomiej Bolesta
 
Najlepsza

Co do drugiego, to ogólnie atrybut [value] pól formularza nie ma nic wspólnego z własnością value tych pól w DOM. [value] to tak naprawdę domyślna wartość tego pola (czemu odpowiada defaultValue w DOM) i w czasie aktualizacji wartości pola się nie zmienia. Niemniej dla kilku pól, w tym [type=hidden], zmiana jednego, pociąga za sobą zmianę drugiego, zgodnie ze szczegółami w specyfikacji HTML.

Co do pierwszego: ukryte pola nie są interaktywne i użytkownik nie może w nie nic wpisać, zatem ich wartość zawsze musi zostać ustawiona przez skrypt. Dlatego też nie ma sensu zapisywać zawartości tych pól. Jeśli strona zostanie wczytana na nowo, po prostu trzeba na nowo ustawić wartości takich pól.

Inna rzecz, że mam wrażenie, że mocno przekombinowałeś. Czemu nie zrobiłeś jednego, dużego formularza na całą stronę? Można też zastosować atrybut [form].

komentarz 25 września 2019 przez Bartłomiej Bolesta Obywatel (1,630 p.)

Czemu nie zrobiłeś jednego, dużego formularza na całą stronę?

Ponieważ raz, jest też dużo innych przycisków na stronie co by pociągało potrzebę ciągłego preventowania, a dwa mam to wszystko zebrane w kupie i nie muszę biegać po nie tylko dość obszernym kodzie strony, ale i dość obszernym kodzie robionym w plikach php, których kod lub wyniki dopiero wstawiam w DOM.

Nie powiem. Efekt po cofnięciu strony mocno upraszczał sprawę. Teraz będę musiał pokombinować na nowo, jeśli chcę zostawić taką możliwość. Dzięki za wyjaśnienie.

Podobne pytania

+1 głos
1 odpowiedź 287 wizyt
pytanie zadane 19 czerwca 2020 w PHP przez Bakkit Dyskutant (7,600 p.)
0 głosów
2 odpowiedzi 554 wizyt
pytanie zadane 11 kwietnia 2021 w HTML i CSS przez Nearr Obywatel (1,890 p.)
0 głosów
1 odpowiedź 759 wizyt

93,081 zapytań

142,045 odpowiedzi

321,464 komentarzy

62,427 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Wprowadzenie do ITsec, tom 2

Można już zamawiać tom 2 książki "Wprowadzenie do bezpieczeństwa IT" - będzie to około 650 stron wiedzy o ITsec (17 rozdziałów, 14 autorów, kolorowy druk).

Planowana premiera: 30.09.2024, zaś planowana wysyłka nastąpi w drugim tygodniu października 2024.

Warto preorderować, tym bardziej, iż mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy dodatkowe 15% zniżki! Dziękujemy zaprzyjaźnionej ekipie Sekuraka za kod dla naszej Społeczności!

...