Pokaż wyniki od 1 do 8 z 8

Wątek: Onclick pola submit z zablokowana akcja formularza

  1. #1
    WAN
    WAN jest nieaktywny
    Grupa MmoCenter
    Dołączył
    Sep 2007
    Posty
    976

    Domyślnie Onclick pola submit z zablokowana akcja formularza

    Mam takie cos:
    Kod:
    document.getElementById('id').setAttribute('onclick','return false; funkcja('atrybuty');');
    Elementem jest pole submit formularza. I teraz gdy klikam, to chce, aby formularz nigdzie nie szedl, a wykonal moja funkcje. Niestety tak sie nie dzieje - jest return false wiec nie przechodzi nigdzie ale i nie odpala funkcji. Gdy odwroce kolejnosc, o tak:
    Kod:
    document.getElementById('id').setAttribute('onclick','funkcja('atrybuty'); return false;');
    To tez funkcja sie nie odpala, ale dlatego, ze nie zdazy - bo ochodzi do zrealizowania formularza... W jaki sposob zreazlizowac to tak, aby oba te atrybuty dzialaly jednoczesnie? Wiem, ze moge pokombinowac inaczej i uzyc co innego zamiast formularza, ale nie o takie rozwiazanie pytam

  2. #2
    Zasłużony Awatar karer
    Dołączył
    Apr 2008
    Posty
    2,554

    Domyślnie Onclick pola submit z zablokowana akcja formularza

    WAN, nigdy sie nie zajmowalem na powaznie tym ale widzialem zrodlo ktore takie cos robi. Byla to chyba taka akcja ze najpierw trzeba zniszczyc onclick a pozniej stworzyc nowy onclick ale nie jestem pewny.Przejrzyj biblioteki advajax.js a konkretnie metode assign. Ona dziala dokladnie tak jak ty chcesz. Najprawdopodobniej chodzi ci o logowanie czy costam przez ajaxa wiec to jest w sam raz dla ciebie. Jak bedziesz mial mimo to problemy to wal smialo...

  3. #3
    Zarejestrowany
    Dołączył
    Mar 2008
    Posty
    220

    Domyślnie Onclick pola submit z zablokowana akcja formularza

    to jest przekopiowany kod? bo jeżli tak, to apostrof wewnatrz stringa zamknietego apostrofem nalezy poprzedzic backslashem

    document.getElementById('id').setAttribute('onclic k','funkcja(\'atrybuty\'); return false;');

    mozesz tez sprobowac konstrukcji

    document.getElementById('id').setAttribute('onclic k','return funkcja(\'atrybuty\');');
    i niech twoja funkca zwraca false.

  4. #4
    WAN
    WAN jest nieaktywny
    Grupa MmoCenter
    Dołączył
    Sep 2007
    Posty
    976

    Domyślnie Onclick pola submit z zablokowana akcja formularza

    Nie, to nie jest dokladnie skopiowany kod, ja to robie w taki sposob:
    document.getElementById('id').setAttribute('onclic k','return false; funkcja('+zmienna1+', '+zmienna2+', '+zmienna3+', '+zmiennan+');');
    mozesz tez sprobowac konstrukcji
    document.getElementById('id').setAttribute('onclic k','return funkcja(\'atrybuty\');');
    i niech twoja funkca zwraca false.
    Przez chwile pomyslalem "genialne", ale niestety - powoduje to zrealizowanie submita i funkcja nie wchodzi.

    Karer - dzieki za hinta, jutro sie w to zaglebie i poszukam. Tak wlasnie - to jest pod ajaxa i stad potrzebna mi taka "dziwna" konstrukcja.

    BTW co ciekawe, probowalem nawet kombinacji onclick return false i do tego dorzucalem wywolanie funkcji na onfocus, ale to tez nie wchodzilo - return false blokuje wszystko az za dobrze i w tym przypadku nawet nie miala znaczenia kolejnosc uzycia

  5. #5
    Zarejestrowany
    Dołączył
    Mar 2008
    Posty
    220

    Domyślnie Onclick pola submit z zablokowana akcja formularza

    a zamiat bawic sie setattribute

    function funkcja(attr) {
    ...
    return false;
    }

    document.getElementById('id').onclick = funkcja;

  6. #6
    Programista
    Dołączył
    Sep 2007
    Posty
    622

    Domyślnie Onclick pola submit z zablokowana akcja formularza

    Eldus już elegancko podał rozwiązanie. Ze swojej strony dodam jeszcze, że można użyć jQuery:
    Kod:
    $('submit').click(function(){ 
    //tutaj akcja
    return false; 
    });
    http://orodlin.pl/ - Orodlin.pl Team Member
    http://blog.albitos.eu - Albi's Jogger - Z pamiętnika młodego programisty
    http://wsosnowski.pl - wizytówka

    Mam do wynajęcia miejsce na serwerze dedykowanym. Ktoś zainteresowany?

  7. #7
    Zasłużony Awatar karer
    Dołączył
    Apr 2008
    Posty
    2,554

    Domyślnie Onclick pola submit z zablokowana akcja formularza

    Klaus Korner, eldus, tak by bylo w przypadku zwyklego guzika/napisu. Tutaj mowimy o polu formularza czyli zatwierdzanie takze guzikiem ENTER ktore nie zadziala w waszym wypadku. Mamy tez zdarzenie onsubmit (teraz sprawdzilem) i to wlasnie ono powinno zostac nadpisane poniewaz zmieni tylko sposob przesylania formularza a nie sam mechanizm jego dzialania.

    Kiedys prubowalem recznie to zrobic opierajac sie na wlasnym doswiadczeniu i na serio nie jest to takie proste jak na pierwszy rzut oka. Trzeba wziac pod uwage troche wiecej tych zdarzen.

    Tutaj macie kawalek tej biblioteki o ktorej wspominalem:
    Kod:
    advAJAX.assign = function(form, args) { 
    
        if (typeof args == "undefined" || args == null) 
            return -1; 
        if (typeof form != "object" || form == null) 
            return -2; 
        if (typeof form["onsubmit"] == "function") 
            form["_onsubmit"] = form["onsubmit"]; 
        form["advajax_args"] = args; 
        form["onsubmit"] = function() { 
            if (typeof this["_onsubmit"] != "undefined" && this["_onsubmit"]() === false) 
                return false; 
            if (advAJAX.submit(this, this["advajax_args"]) == false) 
                return true; 
            return false; 
        } 
        return true; 
    };
    submit to wyslanie argumentow z formularza (this)

  8. #8
    WAN
    WAN jest nieaktywny
    Grupa MmoCenter
    Dołączył
    Sep 2007
    Posty
    976

    Domyślnie Onclick pola submit z zablokowana akcja formularza

    Ja to jednak glupi jestem
    Nakombinowalem sie, naszukalem, a problem taki trywialny.

    Kod:
    document.getElementById('id').setAttribute('onclick','return false; funkcja('+zmienna1+', '+zmienna2+', '+zmienna3+', '+zmiennan+');');
    Jak sie okazalo, ta konstrukcja od poczatku dzialala i byla dobra. Znacznikowi <form> nalezalo dodac w htmlu zwykle onsubmit="return false;" (aby zapobiec potwierdzeniu enterem), a submitowi to co powyzej. Nie dzialalo mi to tylko dlatego, gdyz jedna ze zmiennych zawierala nie liczbe, a tekst i trzeba bylo to umiescic w cudzyslowie (dla przykladu - zmiennan):
    Kod:
    document.getElementById&#40;'id'&#41;.setAttribute&#40;'onclick','return false; funkcja&#40;'+zmienna1+', '+zmienna2+', '+zmienna3+', "'+zmiennan+'"&#41;;'&#41;;
    W polaczeniu z onsubmit false dziala tak, jak powinno
    A i wyglada na to, ze eldus mial troche racji z tymi apostrofami, choc w innym sensie, to moglem to zauwazyc...
    Dzieki za pomoc.

Informacje o wątku

Użytkownicy przeglądający ten wątek

Aktualnie 1 użytkownik(ów) przegląda ten wątek. (0 zarejestrowany(ch) oraz 1 gości)

Podobne wątki

  1. onclick i nic
    Przez matafix w dziale HTML / CSS
    Odpowiedzi: 11
    Ostatni post / autor: 15-10-2010, 04:53
  2. +1 po kliknięciu, do formularza
    Przez Harrocan w dziale JavaScript/AJAX
    Odpowiedzi: 4
    Ostatni post / autor: 31-01-2010, 17:51
  3. Formularz bez submit'a
    Przez kavillock w dziale PHP / MySql
    Odpowiedzi: 8
    Ostatni post / autor: 22-12-2009, 21:16
  4. Akcja kilku uzytkowników
    Przez Armed79 w dziale Budowa gry via www
    Odpowiedzi: 1
    Ostatni post / autor: 20-12-2009, 02:53
  5. Kolor pola formularza i przycisku
    Przez ulosok w dziale HTML / CSS
    Odpowiedzi: 2
    Ostatni post / autor: 12-01-2009, 07:31

Zakładki

Uprawnienia umieszczania postów

  • Nie możesz zakładać nowych tematów
  • Nie możesz pisać wiadomości
  • Nie możesz dodawać załączników
  • Nie możesz edytować swoich postów
  •