eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.wwwdziwne zachowanie formularza
Ilość wypowiedzi w tym wątku: 10

  • 1. Data: 2011-02-26 19:24:54
    Temat: dziwne zachowanie formularza
    Od: Jaro <j...@e...comd>

    Wysyłam formularz i żeby user nie klikał kilka razy przycisku blokuję go
    po kliknięciu submita. Wszystko działa ok do czasu aż użytkownik po
    kliknięciu na przycisk zostanie przeniesiony do strony zapisującej dane z
    formularza i żeby wrócić do formularza nie kliknie przycisku 'wstecz' w
    przeglądarce. Wówczas coś dziwnego dzieje się z submitem. Po prostu nie
    można wysłać wówczas formularza. Przycisk submita jest "nieczynny".
    Nie pomaga nawet refresh strony. Żeby móc wysłać kolejne dane formularzem
    strona gdzie jest formularz musi być wgrana od początku.
    Wie ktoś dlaczego tak się dzieje?

    function dodaj(form)
    {
    // sprawdzanie czy okreslone inputy sa wypełnione
    ....

    // blokada przycisku submit formularza
    vvv=document.getElementById('XV');
    vvv.className='off';
    vvv.value='add;
    vvv.disabled=true;
    // wysylka formularza
    form.submit();
    }

    <form name="formularz" id="formularz" onsubmit="dodaj(this); return
    false;" method="post" action="add.php">
    ...
    <input id="XV" type="submit" class="submit" value="save">


  • 2. Data: 2011-02-26 22:14:51
    Temat: Re: dziwne zachowanie formularza
    Od: porneL <n...@p...net>

    On Sat, 26 Feb 2011 19:24:54 -0000, Jaro <j...@e...comd> wrote:

    > Wysyłam formularz i żeby user nie klikał kilka razy przycisku blokuję go
    > po kliknięciu submita. Wszystko działa ok do czasu aż użytkownik po
    > kliknięciu na przycisk zostanie przeniesiony do strony zapisującej dane z
    > formularza i żeby wrócić do formularza nie kliknie przycisku 'wstecz' w
    > przeglądarce. Wówczas coś dziwnego dzieje się z submitem. Po prostu nie
    > można wysłać wówczas formularza. Przycisk submita jest "nieczynny".
    > Nie pomaga nawet refresh strony. Żeby móc wysłać kolejne dane formularzem
    > strona gdzie jest formularz musi być wgrana od początku.
    > Wie ktoś dlaczego tak się dzieje?

    Refresh powinien pomagać.

    Dzieje się tak, dlatego że formularz z wyłączonym submitem nie może być
    wysłany. Twój .submit() to brzydki hack, który to omija, ale onsubmit nie
    zostanie wywołany PO tym jak wyłaczysz submitowanie.

    Stan formularza jest zachowywany przy przechodzeniu dalej/wstecz, więc
    submit.disabled też.


    <form onsubmit="var that=this; // bo js jest dziwny
    setTimeout(function(){that.vvv.disabled=true},10);
    setTimeout(function(){that.vvv.disabled=false},5000)
    ;
    ">

    To wyłączy submit po wysłaniu formularza i włączy go ponownie po 5
    sekundach (inaczej w przypadku problemów z łącznością użytkownik ma
    przechlapane).

    --
    regards, porneL


  • 3. Data: 2011-02-27 11:41:38
    Temat: Re: dziwne zachowanie formularza
    Od: Jaro <j...@e...comd>

    >> Wie ktoś dlaczego tak się dzieje?
    >
    > Refresh powinien pomagać.

    no właśnie na moim kompie nie pomaga zobaczę jak jest na innych.

    > Dzieje się tak, dlatego że formularz z wyłączonym submitem nie może być
    > wysłany. Twój .submit() to brzydki hack, który to omija, ale onsubmit
    > nie zostanie wywołany PO tym jak wyłaczysz submitowanie.
    > Stan formularza jest zachowywany przy przechodzeniu dalej/wstecz, więc
    > submit.disabled też.
    >
    > <form onsubmit="var that=this; // bo js jest dziwny
    > setTimeout(function(){that.vvv.disabled=true},10);
    > setTimeout(function(){that.vvv.disabled=false},5000)
    ; ">
    >
    > To wyłączy submit po wysłaniu formularza i włączy go ponownie po 5
    > sekundach (inaczej w przypadku problemów z łącznością użytkownik ma
    > przechlapane).

    czyli to też nie jest sposób na 100%?

    Zastanawiam się czy najlepszym wyjściem nie jest zostawienie tego disabled
    w spokoju i takie ustawienie w class submitOFF żeby button miał np. 1px -
    1px, lub inne sposoby z buttonem. User jak mu button zniknie lub
    przeniesie się w inne miejsce , lub wtopi z tłem nic już raczej nie
    zdziała :)

    <form action="zapisz.php" method="post" id="form1" name="form1"
    onsubmit="vvv=document.getElementById('XV'); vvv.className='submitOFF';
    vvv.value='wysyłam';">


  • 4. Data: 2011-02-27 12:39:13
    Temat: Re: dziwne zachowanie formularza
    Od: porneL <n...@p...net>

    On Sun, 27 Feb 2011 11:41:38 -0000, Jaro <j...@e...comd> wrote:

    >> <form onsubmit="var that=this; // bo js jest dziwny
    >> setTimeout(function(){that.vvv.disabled=true},10);
    >> setTimeout(function(){that.vvv.disabled=false},5000)
    ; ">
    >>
    >> To wyłączy submit po wysłaniu formularza i włączy go ponownie po 5
    >> sekundach (inaczej w przypadku problemów z łącznością użytkownik ma
    >> przechlapane).
    >
    > czyli to też nie jest sposób na 100%?
    >
    > Zastanawiam się czy najlepszym wyjściem nie jest zostawienie tego
    > disabled
    > w spokoju i takie ustawienie w class submitOFF żeby button miał np. 1px -
    > 1px, lub inne sposoby z buttonem. User jak mu button zniknie lub
    > przeniesie się w inne miejsce , lub wtopi z tłem nic już raczej nie
    > zdziała :)

    Ale o to chodzi, żeby mógł wcisnąć go ponownie!


    Wyobraź sobie scenariusz:

    * wypełniasz jakiś upierdliwy formularz przez 20 minut
    * wciskasz submit
    * coś zakłóciło twoje Wi-Fi albo ISP pogubił pakiety i masz "ERROR!"
    zamiast wysyłania formularza
    * naprawiasz sieć
    * chesz wysłać ponownie... a tu submit wyłączony/ukryty! I dupa! Siedzisz
    przed wypełnionym formularzem, którego nie da się wysłać.

    Dlatego submit trzeba blokować na kilka sekund, żeby dwuklikacze i
    zniecierpliwieni nie wysyłali formularza wielokrotnie, ale nie można
    blokować na zawsze.

    --
    regards, porneL


  • 5. Data: 2011-02-27 13:19:41
    Temat: Re: dziwne zachowanie formularza
    Od: Jaro <j...@e...comd>

    >> Zastanawiam się czy najlepszym wyjściem nie jest zostawienie tego
    >> disabled
    >> w spokoju i takie ustawienie w class submitOFF żeby button miał np. 1px
    >> - 1px, lub inne sposoby z buttonem. User jak mu button zniknie lub
    >> przeniesie się w inne miejsce , lub wtopi z tłem nic już raczej nie
    >> zdziała :)


    > Ale o to chodzi, żeby mógł wcisnąć go ponownie!
    > Wyobraź sobie scenariusz:
    > * wypełniasz jakiś upierdliwy formularz przez 20 minut * wciskasz submit
    > * coś zakłóciło twoje Wi-Fi albo ISP pogubił pakiety i masz "ERROR!"
    > zamiast wysyłania formularza
    > * naprawiasz sieć
    > * chesz wysłać ponownie... a tu submit wyłączony/ukryty! I dupa!
    > Siedzisz przed wypełnionym formularzem, którego nie da się wysłać.
    >
    > Dlatego submit trzeba blokować na kilka sekund, żeby dwuklikacze i
    > zniecierpliwieni nie wysyłali formularza wielokrotnie, ale nie można
    > blokować na zawsze.

    Nie ma idealnego sposobu. Ten podany przez Ciebie też ma poważną wadę.
    Jeśli w formularzu jest np. zdjęcie czyli formularz wysyła się kilka/
    naście/dziesiąt sekund to zablokowanie na np. 10 s. nic nie da bo nerwus
    zdąży weń kliknąć jeszcze kilka razy :)
    Bo przecież blokując Twoim sposobem formularz tak naprawdę nie wiesz jak
    długo potrwa jego wysyłka.


  • 6. Data: 2011-02-27 15:02:49
    Temat: Re: dziwne zachowanie formularza
    Od: Michał Gancarski <m...@g...com>

    On Sat, 26 Feb 2011 19:24:54 +0000 (UTC), Jaro wrote:

    > Wysyłam formularz i żeby user nie klikał kilka razy przycisku blokuję go
    > po kliknięciu submita.

    A nie powinieneś tego obsługiwać raczej po stronie serwera, wykrywając, czy
    to jest to samo ale wysłane ponownie?

    [...]

    --
    Michał Gancarski


  • 7. Data: 2011-02-27 15:08:13
    Temat: Re: dziwne zachowanie formularza
    Od: Peter May <p...@o...pl>

    W dniu 2011-02-27 14:19, Jaro pisze:
    [...]
    > Bo przecież blokując Twoim sposobem formularz tak naprawdę nie wiesz jak
    > długo potrwa jego wysyłka.

    Poczytaj o zdarzeniu onprogress. Wiele przeglądarek już je obsługuje. Za
    pomocą nieco sprawdzisz ile jeszcze pozostało do załadowania pliku.
    Wówczas dasz komunikat zwrotny dla użytkownika i będzie on wiedział ile
    czasu musi jeszcze poczekać. Przykład:

    http://www.3site.eu/jstests/upload/

    --
    Peter


  • 8. Data: 2011-02-27 15:10:33
    Temat: Re: dziwne zachowanie formularza
    Od: Mirosław Zalewski <miniopl@CUT_THIS.gmail.com>

    luty roku pamiętnego 2011, prawdopodobnie 27. Wielka mądrość na
    czytelników pl.comp.www spłynęła, gdy tako rzekł(a) Jaro:

    > Jeśli w formularzu jest np. zdjęcie czyli formularz wysyła się kilka/
    > naście/dziesiąt sekund to zablokowanie na np. 10 s. nic nie da bo
    > nerwus zdąży weń kliknąć jeszcze kilka razy :)

    A nie ma możliwości poinformowania użytkownika że jego formularz jest
    wysyłany?
    Na tej samej zasadzie w galeriach pisanych w JS póki się zdjęcie ładuje
    wyświetla się jakić symbol informujący o tym, że zdjęcie jest pobierane.

    Poza tym chyba możesz dodawać jakiś identyfikator sesji żeby serwer
    wiedział, że otrzymany formularz właśnie jest przetwarzany i żeby go
    olać.

    Jeśli np. użytkownik wysyła plik, to powinien być tam jakiś prosty
    panel administracyjny do usuwania wysłanych plików. Żeby taki nerwus
    jak przypadkiem wyśle obrazek dwa razy mógł ten nadmiarowy usunąć.

    Przyznam szczerze, że dla mnie cały ten problem jest dość abstrakcyjny.
    Formularze wysyłania plików mogą się długo wysyłać i tak jest w całym
    Internecie. Jeżeli serwer potrzebuje dużo czasu na przetworzenie
    jakichś danych od użytkownika, to warto w samym formularzu napisać, że
    należy cierpliwie czekać kilkanaście sekund.
    --
    Niżej podpisany, zamieszkały w http://minio.xt.pl ,
    Mirosław Zalewski


  • 9. Data: 2011-02-27 15:15:45
    Temat: Re: dziwne zachowanie formularza
    Od: porneL <n...@p...net>

    On Sun, 27 Feb 2011 13:19:41 -0000, Jaro <j...@e...comd> wrote:

    >> Dlatego submit trzeba blokować na kilka sekund, żeby dwuklikacze i
    >> zniecierpliwieni nie wysyłali formularza wielokrotnie, ale nie można
    >> blokować na zawsze.
    >
    > Nie ma idealnego sposobu. Ten podany przez Ciebie też ma poważną wadę.
    > Jeśli w formularzu jest np. zdjęcie czyli formularz wysyła się kilka/
    > naście/dziesiąt sekund to zablokowanie na np. 10 s. nic nie da bo nerwus
    > zdąży weń kliknąć jeszcze kilka razy :)
    > Bo przecież blokując Twoim sposobem formularz tak naprawdę nie wiesz jak
    > długo potrwa jego wysyłka.

    Owszem. Wgrywanie zdjęć to trudniejszy problem. W takim przypadku
    dodawałbym do formularza przycisk "Anuluj", który włącza submit.

    --
    regards, porneL


  • 10. Data: 2011-02-27 18:49:30
    Temat: Re: dziwne zachowanie formularza
    Od: Jaro <j...@e...comd>

    Dnia Sun, 27 Feb 2011 16:02:49 +0100, Michał Gancarski napisał(a):

    > On Sat, 26 Feb 2011 19:24:54 +0000 (UTC), Jaro wrote:
    >
    >> Wysyłam formularz i żeby user nie klikał kilka razy przycisku blokuję
    >> go po kliknięciu submita.
    >
    > A nie powinieneś tego obsługiwać raczej po stronie serwera, wykrywając,
    > czy to jest to samo ale wysłane ponownie?
    >
    > [...]

    Oczywiście, że tak robię. JS jest tylko na wszelki wypadek :)
    Nie wiem tylko jak to jest czy jak user kliknie kilka razy przycisk submit
    to czy formularz z wybraną fotką kilka razy się wyśle? O ile sam
    formularz to pikuś o tyle już fotka jeśli ma powiedzmy 2MB kilka razy
    wysłana to już jest niefajnie.

strony : [ 1 ]


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: