Search code examples
jqueryhtmlclone

jQuery clone() form submit dont work as supposed


When I clone a form and want to submit cloning form it submit parent form. I update the question.

        $(document).ready(function () {
            $('body').on('click','input[type="submit"]',function(e) {
                        e.preventDefault();
                        console.log($(this).closest('form'));
                        $(this).closest('form').submit();
                     });
             $('#clone').click(function(e) {
                       e.preventDefault();
                       $('#myform_1').clone(true).prop('id', 'myform_2' ).appendTo('.clone');
                     });
             $('[id^="myform_"]').each(function(key, form) {

                 $(form). validate({ //intit plugin
                    rules: {
                        field1: {
                            required: true
                        },
                        field2: {
                            required: true
                        }
                    },
                    submitHandler: function (form) { 
                        alert('valid form submitted'); 
                        return false; 
                    }
                });
             });
         });

http://jsfiddle.net/zMYVq/552/


Solution

  • You can try something like below,

    $(document).ready(function () {
        $('body').on('click','input[type="submit"]',function(e) {
                    e.preventDefault();
                    console.log($(this).closest('form'));
                    $(this).closest('form').submit();
                 });
         $('#clone').click(function(e) {
                   e.preventDefault();
                   $('#myform_1').clone(true).prop('id', 'myform_2' ).appendTo('.clone');
                 });
    
         $(".submit").click(function(){
            $(this).parent().validate({
                rules: {
                    field1: {
                        required: true
                    },
                    field2: {
                        required: true
                    }
                },
                submitHandler: function (form) { 
                    alert('valid form submitted formId='+$(form).attr("id")); 
                    return false; 
                }
            }); 
         });
    
    });
    

    I have just assigned a class to your submit button

    <div class="cl">
    <form id="myform_1">
        <input type="text" name="field1" />
        <br/>
        <input type="text" name="field2" />
        <br/>
        <input type="submit" class="submit"/>
    </form>
    </div>