Eredmény: 1 - 4 (4) összesen

Téma: jquery focusout == submit

  1. #1
    Bölcs earnnet logója
    Csatlakozott
    12-08-15
    Hely
    Budapest
    Hozzászólás
    1.477
    Begyűjtött 655 köszönetet
    462 hozzászólásával

    Alapbeállítás jquery focusout == submit

    Sziasztok,

    Kellene nekem valami jó kis megoldás leellenőrizni, hogy egy input focusout eseménye a form submit miatt (enter) vagy mellékattintás miatt következik-e be. Mivel maga az event.type is "focusout", az event adatokból nem tudtam kihalászni semmit,


    a képet azért rakom, mert nem tudtam normálisabban betördelni mint ez
    HTML kód:
            $(".clientrow[clientid="+clientid+"] td."+fieldname+"").bind("focusout", function(event){            console.log(event);            setTimeout(function() {                if (!event.delegateTarget.contains(document.activeElement)) {
                        // Ha a focusout enterre hívódik meg, akkor submit is van                    // Ha módosítasz egy mezőt és arrébbkattintasz (focusout), akkor a mező tartalma megváltozik az újra a következő sor miatt, de az adatbázisban nem. Ez a probléma.                    // ------------                    $(".clientrow[clientid="+clientid+"] td."+fieldname+"").html( $(".clientrow[clientid="+clientid+"] td."+fieldname+" input[type=text]").val());                }              }, 0);        });
    
    Az lenne a logikus, hogy a form egy stopPropagation() miatt nem adná át az eseményt a td-nek, mivel ugye a td-re van rakva a bind, az a külső elem. Csak a stopPropagation egyszerűen nem működik itt

    HTML kód:
    $(".clientrow form").bind("submit", function(e){
    
    e.stopPropagation();
    
    //...
    any help appreciated


    Utoljára módosítva: earnnet által : 2015-07-18 13:43

  2. #2
    Hekker 0xFF logója
    Csatlakozott
    09-08-21
    Hozzászólás
    1.079
    Begyűjtött 168 köszönetet
    118 hozzászólásával

    Alapbeállítás re: jquery focusout == submit

    A stopPropagation csak a propagálást állítja meg magát az eventet nem. Tehát a submit nem megy tovább felfele vagyis nem ér pl a document-ig, de a submit megtörténik, neked e.preventDefault(); kell.

    Update: Vagy a clicket / entert kapod el a submit helyett és azt nem engeded propagálni.



  3. #3
    Bölcs earnnet logója
    Csatlakozott
    12-08-15
    Hely
    Budapest
    Hozzászólás
    1.477
    Begyűjtött 655 köszönetet
    462 hozzászólásával

    Alapbeállítás re: jquery focusout == submit

    Próbáltam preventDefaultot is mellérakni, akkor nem sikerült. De most van egy 98%-os megoldásom, a selectort az inputra cseréltem, és az eseményt meg blurre. (98%, ha nagyon gyorsan kattintgatok, kiakaszthatom a rendszert) Ez elég random volt, mert egyáltalán nem látom át, hogy akkor most a td-vel mi történik, ráadásul ezeket az elemeket még dinamikusan generálom és még bindolgatni is kell. Elvileg a stopPropagationt azért raktam be, hogy az input melletti 2 pixeles sáv a td-ből ne befolyásolja a működést. Szóval most elvileg jó. Meglátjuk, remélem nem kell már rajta matatni

    Az a tippem egyébként, hogy a TD-nek nincsen külön focus tulajdonsága, csak akkor kaphat fókuszt ha benne lévő input fókuszt kap és csak akkor lehet focusout, ha egy inputból kifele egy másik inputba kattintunk és nem egy másik tdnek az inputon kívüli részére. Ez így is volt, ha jól emlékszem.


    Utoljára módosítva: earnnet által : 2015-07-18 17:20

  4. #4
    Bölcs
    Csatlakozott
    12-08-31
    Hozzászólás
    978
    Begyűjtött 336 köszönetet
    228 hozzászólásával

    Alapbeállítás re: jquery focusout == submit

    Ezzel le tudod kérdezni az focusout esemény után, hogy lenyomták-e az entert, vagy sem:
    jQuery Keycode Cheatsheet | mikemurko

    A td-nek nem lesz focus eseménye. Az inputra tudod tenni, majd az input szülőjére tudsz hivatkozni.
    https://api.jquery.com/parent/



Könyvjelzők

Hozzászólás szabályai

  • Új témákat nem hozhatsz létre
  • Válaszokat nem küldhetsz
  • Fájlokat nem csatolhatsz
  • A hozzászólásaidat nem módosíthatod
  •