eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.wwwJak prawidłowo submitować formularz HTML?
Ilość wypowiedzi w tym wątku: 20

  • 1. Data: 2009-06-10 14:51:55
    Temat: Jak prawidłowo submitować formularz HTML?
    Od: "Marek" <m...@s...interia.pl>

    Witam,

    Jak w sposób elegancki rozwiązać następujący problem:

    1. Formularz zawiera pola tekstowe i 2 buttony. Pierwszy z buttonów nazywa
    się "zaktualizuj wybrany rekord" a drugi "utórz nowy rekord".
    2. Chcemy aby enter na polu tekstowym wykonał akcję domyślną, która może być
    albo buttonem 1 albo 2gim.
    3. To, który button jest domyślny zależy do akcji wcześniej wykonanej przez
    użytkownika. Gdy zaznaczył on rekord do aktualizacji wtedy domyślnym
    buttonem jest 1 lub jeśli nie zaznaczał go to wtedy domyślnym buttonem jest
    2.

    Obecnie realizuje to JS, który na podstawie analizy stanu formularza
    aktualizuje pole action tego formularza ustawiając w nim "?mode=update" lub
    "?mode=create". Dodatkowo JS "podświetla" button domyślny aby użytkownik
    wiedział co zrobi enter. Jeśli zrobiłbym pole hidden o nazwie mode i do
    niego wpisywał tą akcję "update" lub "create", to nie dostrzegam korzyści z
    tej zmiany (tu nawiązuję do wcześniejszego mojego wątku - to dla kolegów
    biorących w nim udział).

    Do rozważań weźmy pod uwagę fakt, że jeśli oba buttony mają swój atrybut
    name, to w FF enter na polu tekstowym równoznaczny jest z naciśnięciem
    pierwszego buttona. W zmiennych POST pojawia się zmienna zgodna z name tego
    buttona. Natomiast w IE nie jest przesyłana w POST żadna zmienna związana z
    buttonem jeśli fizycznie nie zostanie on naciśnięty.

    Miniejszy wątek ma związek z wypowiedzią Pornela:

    "Jeśli nie wiesz, czy dobrze używasz formularzy, to poszukaj "submit()"
    - jeśli masz go w kodzie, to źle używasz formularzy."

    --
    Pozdrawiam,
    Marek

    --
    Pozdrawiam,
    Marek


  • 2. Data: 2009-06-10 17:03:27
    Temat: Re: Jak prawidłowo submitować formularz HTML?
    Od: Krzysztof Warunek <k...@w...pl>

    Marek pisze:
    > Witam,
    >
    > Jak w sposób elegancki rozwiązać następujący problem:
    >
    > 1. Formularz zawiera pola tekstowe i 2 buttony. Pierwszy z buttonów
    > nazywa się "zaktualizuj wybrany rekord" a drugi "utórz nowy rekord".

    tego nie rozumiem. jedno pole dwa przyciski;)

    puszczasz normalnie formularz. a skrypt który go obsługuje sprawdza czy
    dane z "pole tekstowe" istnieją jeśli tak to zmiana jeśli nie twórz nowe.

    Zalety:
    brak JS


    --
    pozdrawiam,

    Krzysztof Warunek

    *In specialibus generalia quaerimus*


  • 3. Data: 2009-06-10 17:43:15
    Temat: Re: Jak prawidłowo submitować formularz HTML?
    Od: Artur Muszyński <a...@u...wytnijto.com.pl>

    Marek pisze:
    > Witam,
    >
    > Jak w sposób elegancki rozwiązać następujący problem:
    >
    > 1. Formularz zawiera pola tekstowe i 2 buttony. Pierwszy z buttonów
    > nazywa się "zaktualizuj wybrany rekord" a drugi "utórz nowy rekord".
    > 2. Chcemy aby enter na polu tekstowym wykonał akcję domyślną, która może
    > być albo buttonem 1 albo 2gim.
    > 3. To, który button jest domyślny zależy do akcji wcześniej wykonanej
    > przez użytkownika. Gdy zaznaczył on rekord do aktualizacji wtedy
    > domyślnym buttonem jest 1 lub jeśli nie zaznaczał go to wtedy domyślnym
    > buttonem jest 2.

    Niestety, poważna niedoróbka HTML: Nie można ustawić domyślnego
    przycisku submit. W ogóle z tym jest zamieszanie, standard HTML chyba
    tego nie precyzuje w żadnej wersji.

    > Obecnie realizuje to JS, który na podstawie analizy stanu formularza
    > aktualizuje pole action tego formularza ustawiając w nim "?mode=update"
    > lub "?mode=create". Dodatkowo JS "podświetla" button domyślny aby
    > użytkownik wiedział co zrobi enter. Jeśli zrobiłbym pole hidden o nazwie
    > mode i do niego wpisywał tą akcję "update" lub "create", to nie
    > dostrzegam korzyści z tej zmiany (tu nawiązuję do wcześniejszego mojego
    > wątku - to dla kolegów biorących w nim udział).

    Przede wszystkim, standardowym działaniem powinno być naciśnięcie
    jednego z przycisków. Dlatego najbardziej naturalne jest zasymulowanie
    kliknięcia click(). Na serwerze wykrywaj, który przycisk nacisnąłeś.

    artur


  • 4. Data: 2009-06-10 18:09:01
    Temat: Re: Jak prawidłowo submitować formularz HTML?
    Od: "Marek" <m...@s...interia.pl>

    > tego nie rozumiem. jedno pole dwa przyciski;)

    A teraz ja nie zaskoczyłem :)

    > puszczasz normalnie formularz. a skrypt który go obsługuje sprawdza czy
    > dane z "pole tekstowe" istnieją jeśli tak to zmiana jeśli nie twórz nowe.

    A jak zareagować z jednym przyciskiem na przypadek gdy ktoś wybierze rekord
    do edycji lecz nie będzie chciał go zaktualizować lecz na bazie zawartych w
    nim danych zapisać nowy rekord?


  • 5. Data: 2009-06-10 18:27:10
    Temat: Re: Jak prawidłowo submitować formularz HTML?
    Od: "Marek" <m...@s...interia.pl>

    > Niestety, poważna niedoróbka HTML: Nie można ustawić domyślnego przycisku
    > submit. W ogóle z tym jest zamieszanie, standard HTML chyba tego nie
    > precyzuje w żadnej wersji.

    Zdajesz sobie sprawę, że ten wątek powstał wskutek Twojego "zarzutu"
    względem mnie w zakresie stosowania JS przy submitowaniu formularzy?
    :-))))))

    > Przede wszystkim, standardowym działaniem powinno być naciśnięcie jednego
    > z przycisków. Dlatego najbardziej naturalne jest zasymulowanie kliknięcia
    > click(). Na serwerze wykrywaj, który przycisk nacisnąłeś.

    Hmmm... można i tak ale to nie zadziała pod FF. Gdy mam w formularzu więcej
    niż jeden button typu submit, to FF enter wykonany na polu tekstowym
    traktuje jako kliknięcie pierwszego z tych buttonów. Nie da się wychwycić
    zdarzenia enter'a na polu tekstowym inaczej niż implementując na każdym z
    nich obsługę zdarzenia onClick, a tego z oczywistych względów chciałbym
    uniknąć.

    Wariant drugi: nie stosujemy żadnych buttonów typu submit. Zamiast tego
    moglibyśmy zastosować zwykłe... ale wtedy nie da się submitować formularza
    inaczej jak wołąjąc z poziomu JS submit(), którego nie należy stosować -
    cytując Twoje intencje z poprzedniego wątku. Więc i ten wariant odpada.

    Znam sztuczkę z zastosowaniem ukrytego buttona "submit" jako pierwszego w
    kodzie. Tzn ukryty w sensie przesunięcia poza ekran bo uczynienie go
    niewidocznym pozbawia go funkcjonalności w którejś z przeglądarek. No ale to
    wytrych a nie eleganckie rozwiązanie, o które pytam w wątku.


  • 6. Data: 2009-06-10 18:34:38
    Temat: Re: Jak prawidłowo submitować formularz HTML?
    Od: Paweł Piskorz <n...@p...nie?>

    Marek pisze:
    > Jak w sposób elegancki rozwiązać następujący problem:
    >
    > 1. Formularz zawiera pola tekstowe i 2 buttony. Pierwszy z buttonów
    > nazywa się "zaktualizuj wybrany rekord" a drugi "utórz nowy rekord".
    > 2. Chcemy aby enter na polu tekstowym wykonał akcję domyślną, która może
    > być albo buttonem 1 albo 2gim.
    > 3. To, który button jest domyślny zależy do akcji wcześniej wykonanej
    > przez użytkownika. Gdy zaznaczył on rekord do aktualizacji wtedy
    > domyślnym buttonem jest 1 lub jeśli nie zaznaczał go to wtedy domyślnym
    > buttonem jest 2.

    Ustawiaj domyślny submit jako pierwszy w kodzie, a w stylach nadaj mu
    pozycję tak żeby nie zmieniał miejsca w zależności od tego czy jest
    domyślny, czy nie. Albo zrób pola radio do wyboru akcji, tyle że to może
    być męczące przy częstej zmianie.

    > Do rozważań weźmy pod uwagę fakt, że jeśli oba buttony mają swój atrybut
    > name, to w FF enter na polu tekstowym równoznaczny jest z naciśnięciem
    > pierwszego buttona. W zmiennych POST pojawia się zmienna zgodna z name
    > tego buttona. Natomiast w IE nie jest przesyłana w POST żadna zmienna
    > związana z buttonem jeśli fizycznie nie zostanie on naciśnięty.

    A co to za problem? Zapisz domyślną akcję w polu hidden.


    --
    message[autor="PablO"]::after {
    content:"Pozdrawiam";
    }


  • 7. Data: 2009-06-10 19:04:25
    Temat: Re: Jak prawidłowo submitować formularz HTML?
    Od: "Marek" <m...@s...interia.pl>

    > Ustawiaj domyślny submit jako pierwszy w kodzie, a w stylach nadaj mu
    > pozycję tak żeby nie zmieniał miejsca w zależności od tego czy jest
    > domyślny, czy nie.

    Jak w takim przypadku zmieniać button domyślny jako skutek akcji
    użytkownika? Inny button jest domyślnym gdy użytkownik zaznaczy rekord do
    edycji a inni zanim to zrobi.

    > Albo zrób pola radio do wyboru akcji, tyle że to może
    > być męczące przy częstej zmianie.

    Tak, właśnie. Jeśli są 2 przyciski to najbardziej logicznie jest żąglować
    ich domyślnością.

    > A co to za problem? Zapisz domyślną akcję w polu hidden.

    A co w takim przypadku z FF? Jeśli albo zrobimy enter na polu tekstowym albo
    klikniemy pierwszy w/g położenia w kodzie button typu submit to efekt będzie
    taki sam z punktu widzenia serwera: w zmiennych POST wystąpi zarówno ukryte
    pole jak i name tego nie-kliknietego przycisku. Jak to rozróżnić?


  • 8. Data: 2009-06-10 19:09:37
    Temat: Re: Jak prawidłowo submitować formularz HTML?
    Od: Paweł Piskorz <n...@p...nie?>

    Marek pisze:
    > Hmmm... można i tak ale to nie zadziała pod FF. Gdy mam w formularzu
    > więcej niż jeden button typu submit, to FF enter wykonany na polu
    > tekstowym traktuje jako kliknięcie pierwszego z tych buttonów. Nie da
    > się wychwycić zdarzenia enter'a na polu tekstowym inaczej niż
    > implementując na każdym z nich obsługę zdarzenia onClick

    Bezedura, porneL już o tym pisał: <form onsubmit>
    NTG -> pl.comp.lang.javascript


    --
    message[autor="PablO"]::after {
    content:"Pozdrawiam";
    }


  • 9. Data: 2009-06-10 19:13:49
    Temat: Re: Jak prawidłowo submitować formularz HTML?
    Od: Paweł Piskorz <n...@p...nie?>

    Marek pisze:
    >> Ustawiaj domyślny submit jako pierwszy w kodzie, a w stylach nadaj mu
    >> pozycję tak żeby nie zmieniał miejsca w zależności od tego czy jest
    >> domyślny, czy nie.
    >
    > Jak w takim przypadku zmieniać button domyślny jako skutek akcji
    > użytkownika? Inny button jest domyślnym gdy użytkownik zaznaczy rekord
    > do edycji a inni zanim to zrobi.

    Jeżeli ta akcja ładuje nową stronę, to gdzie tu widzisz problem?

    >> Albo zrób pola radio do wyboru akcji, tyle że to może
    >> być męczące przy częstej zmianie.
    >
    > Tak, właśnie. Jeśli są 2 przyciski to najbardziej logicznie jest
    > żąglować ich domyślnością.

    To może być ciut mylące, raz domyślne jest to, raz coś innego.

    >> A co to za problem? Zapisz domyślną akcję w polu hidden.
    >
    > A co w takim przypadku z FF? Jeśli albo zrobimy enter na polu tekstowym
    > albo klikniemy pierwszy w/g położenia w kodzie button typu submit to
    > efekt będzie taki sam z punktu widzenia serwera: w zmiennych POST
    > wystąpi zarówno ukryte pole jak i name tego nie-kliknietego przycisku.
    > Jak to rozróżnić?

    if :P


    --
    message[autor="PablO"]::after {
    content:"Pozdrawiam";
    }


  • 10. Data: 2009-06-10 19:16:09
    Temat: Re: Jak prawidłowo submitować formularz HTML?
    Od: "Marek" <m...@s...interia.pl>

    Sorki, dziś ciężko rozumuję.
    Właśnie dotarło do mnie przesłanie. Zawartość hiden przecież inna będzie
    :-))))

    A tak na marginesie to można zmieniać wartość value domyślnego czyli
    pierwszego submita. Wtedy nie trzeba wprowadzać dodatkowego pola. Oczywiście
    należy wtedy ciut więcej kodu po stronie serwera użyć aby sprawdzał oba
    przypadki: submit przez IE oraz submit przez pozostałe. Przypomnę, że w IE
    nie zostanie przesłana zmienna związana z przyciskiem o ile go fizycznie nie
    naciśniemy.

strony : [ 1 ] . 2


Szukaj w grupach

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: