Jquery .on() submit event

前端 未结 3 1974
长情又很酷
长情又很酷 2020-11-28 04:12

I\'ve got a problem with .on(). I have multiple form-elements (forms with class=\"remember\"), also I add another one form.remember us

相关标签:
3条回答
  • 2020-11-28 04:39

    The problem here is that the "on" is applied to all elements that exists AT THE TIME. When you create an element dynamically, you need to run the on again:

    $('form').on('submit',doFormStuff);
    
    createNewForm();
    
    // re-attach to all forms
    $('form').off('submit').on('submit',doFormStuff);
    

    Since forms usually have names or IDs, you can just attach to the new form as well. If I'm creating a lot of dynamic stuff, I'll include a setup or bind function:

    function bindItems(){
        $('form').off('submit').on('submit',doFormStuff); 
        $('button').off('click').on('click',doButtonStuff);
    }   
    

    So then whenever you create something (buttons usually in my case), I just call bindItems to update everything on the page.

    createNewButton();
    bindItems();
    

    I don't like using 'body' or document elements because with tabs and modals they tend to hang around and do things you don't expect. I always try to be as specific as possible unless its a simple 1 page project.

    0 讨论(0)
  • 2020-11-28 04:42

    You need to delegate event to the document level

    $(document).on('submit','form.remember',function(){
       // code
    });
    

    $('form.remember').on('submit' work same as $('form.remember').submit( but when you use $(document).on('submit','form.remember' then it will also work for the DOM added later.

    0 讨论(0)
  • 2020-11-28 04:42

    I had a problem with the same symtoms. In my case, it turned out that my submit function was missing the "return" statement.

    For example:

     $("#id_form").on("submit", function(){
       //Code: Action (like ajax...)
       return false;
     })
    
    0 讨论(0)
提交回复
热议问题