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

Formularz - jeden input, wymagany "submit", a zwracany rezultat.

0 głosów
81 wizyt
pytanie zadane 15 września 2021 w JavaScript przez Wiciorny Mędrzec (199,040 p.)

Witajcie,
Pytanie bardziej do osób, które swoje już zjadły w kwestii "frontendu i javascriptu", w czym sprawa? 
Otóż generalnie problem w aplikacji : w kilku miejscach, polegał na pewnym zdarzeniu - kiedy formularz  zawierający jeden input textowy był akceptowany przez "BUTTON" - dołączony do formularza (istotne jest typu "button"). 


Wszystkie operacje ajax-owe, związane z obsługą wysłania POST działały dobrze, problem pojawia się w sytuacji, kiedy użytkownik znajduje się na inpucie "textowym" do wypełnienia. 
Akcja - kliknięcia "ENTER" powoduje, akceptacje całego formularz - > jednocześnie z błędnym rezultatem który wyświetli sam "json response", nie ładując widoku. 
Od strony serwera, operacje są identyczne, jednak od razu widac, że ten input przyjmuje role submit- bo nie powinno byc możliwości akceptacji enterem mając na nim focus, wiem to można zablokować, ale chodzi mi o zachowanie formularza w takich przypadkach, dlaczego wymuszone jest "posiadanie subbmita" ? 
Oczywiście można zrobić też prevent, czy  zablokować poprzez keypres na enter, ale zastanawiam się ( szukałem w dokumentacji, nie znalazłem ), jak poradzić sobie z wymaganiem submita na formularzu.

Problem ten jest wynikiem sytuacji, że jeden input na formularzu traktowany jest  jako sumbit - nie zważając na występowanie buttonów, swojego typu.Jeśli nie ma "ogólnie elementu takiego na formularzu", dodanie drugiego inputa też typu textowego już nie wywoła tego problemu.
Z punktu widzenia bezpieczeństwa też uważam że tworzenie hidden inputa submit byłoby niedobrym pomysłem, 
Ktoś jest wstanie mi powiedzieć, dlaczego jest takie zachowanie biblioteczne, czy da się je obejść - mówię ogólnie od strony biblioteki, a nie własną implementacja np poprzez onClick -> false, czy zablokowanie entera?  

Dzięki za rozwinięcie dyskusji w tym temacie. 

1 odpowiedź

+3 głosów
odpowiedź 15 września 2021 przez Comandeer Guru (563,180 p.)

Bo formularze służą do tego, by zostać wysłanymi po uzupełnieniu. A jeśli nie ma jak go wysłać (nie ma przycisku), zostaje dodane zachowanie z tym Enterem. Jest to dokładnie opisane w specyfikacji HTML.

Dlatego dobrą praktyką jest przypięcie się do zdarzenia submit formularza i obsługa go z tego poziomu, nie zaś z poziomu kliku na przycisku. Osobiście pewnie bym ten button zmienił właśnie na submita i obsłużył całość w zdarzeniu submit.

komentarz 15 września 2021 przez Wiciorny Mędrzec (199,040 p.)
tzn przycisk jest, ale jest on w projekcie zrobiony przez nas, jako osobny element htmlowy po prostu - i jest typu button stąd próba innego rozwiązania, bo jest to jsp- gdzie "Tag" jest tworzony przez "nas", więc generalnie sytuacja ma miejsce jak formularz ma 1 input wtedy.

Dzięki poczytam, rozmyślam czy aby nie kierować tutaj zmiany typu buttona na submit, albo zmiany operacji, właśnie jak piszesz- serdecznie dzieki

Podobne pytania

0 głosów
1 odpowiedź 77 wizyt
pytanie zadane 14 września 2020 w PHP przez Lort533 Nowicjusz (160 p.)
0 głosów
0 odpowiedzi 75 wizyt
0 głosów
4 odpowiedzi 207 wizyt
pytanie zadane 21 kwietnia 2018 w PHP przez wneku Nowicjusz (200 p.)

86,541 zapytań

135,291 odpowiedzi

300,649 komentarzy

57,288 pasjonatów

Motyw:

Akcja Pajacyk

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

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...