我有多个表单,这些表单是在运行时由模板引擎动态生成的,为了在提交时生成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请求。但是,我很难知道单击表单中的哪些提交输入,因为它们也是动态生成的。想法?
答案 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设置