在提交动态生成的表单时,找到单击了哪个提交按钮

时间:2016-03-19 19:19:21

标签: javascript jquery ajax javascript-events

我有多个表单,这些表单是在运行时由模板引擎动态生成的,为了在提交时生成ajax请求,我使用了“on”方法来委派事件。

$("#friendRequestsList").on("submit", "[id^=friendReqResponse-form]", function(){
    var form = this;
    $(form).ajaxSubmit({
        url:'URL',
        type:'post',
        dataType: 'json',
        success: function(data) {
            DO SOMETHING
        }

    });
    return false;
});

表单有2个提交按钮,我需要检测它们中的哪一个被点击并将此信息传递给ajax请求。但是,我很难知道单击表单中的哪些提交输入,因为它们也是动态生成的。想法?

2 个答案:

答案 0 :(得分:0)

我希望它会对您有所帮助:

$("#friendRequestsList").on("submit", "[id^=friendReqResponse-form]", function(){
     var submit1 = $(this).attr('value');

     var formData = new FormData();
     formData.append('submit1', submit1);

     $.ajax({
        url:'URL',
        type:'post',
        data:formData,
        dataType: 'json',
        success: function(data) {
            DO SOMETHING
        }

    });
    return false;
});

答案 1 :(得分:0)

在Connors建议使用click事件而不是提交之后,我设法获得了提交按钮,如下所示:

 $("#friendRequestsList").on("click", "[id^=submit1], [id^=submit2]", function(e) {
    var input = this;
    var form = $(input).parent();

    $(form).ajaxSubmit({
        url:'URL',
        type:'post',
        dataType: 'json',
        success: function(data) {
            DO SOMETHING
        }

    });
    e.preventDefault()
});

当然,如果我的表单有输入字段,这将无法正常工作,因为它不会在按键Enter的表单提交时触发。此外,您仍需要将输入标识信息附加到ajax请求。

我是通过添加

来做到这一点的
 data: {submit:input.value},

到ajaxSubmit设置