我在一个页面上有两个表单,一个表单用于上传文件,另一个用于弹出窗口,在文件上传时要求发送电子邮件。两者都使用ajax,我在处理它们时遇到了一些麻烦。
我希望我的每个ajax代码只能在他们各自的表单上工作,而不是在我的html页面上找到的第一个表单(现在只有最高<form></form>
由我的ajax代码提供。)< / p>
AJAX:
# for uploading files form
$("#fileupload").fileupload({
dataType: 'json',
sequentialUploads: true,
start: function (e) {
$("#modal-progress").modal("show");
},
...
done: function (e, data) {
if (data.result.is_valid) {
...
}
}
});
# for email form
$(document).on('submit', '#formTwo', function(e){
e.preventDefault();
$.ajax({
# is there a command to specify in which form it should run ?
type:'POST',
url:'/tools/newsletter/',
data:{
email:$('#email').val(),
csrfmiddlewaretoken:$('#formTwo input[name=csrfmiddlewaretoken]').val(),
},
});
$("#modal-progress").modal("hide");
});
forms.html
<!-- Email form -->
<form id="formTwo" method="post" action="newsletter">
...
<input id="email" maxlength="255" placeholder="Votre adresse email" name="email" type="text" class="form-control">
<input type="submit" class="btn btn-success">
</form>
<!-- Uploading files form -->
<form id="formOne" method="post" enctype="multipart/form-data" action="{% url 'basic_upload' %}">
...
<input id="fileupload" type="file" name="file" multiple>
</form>
我该如何解决这个问题?
答案 0 :(得分:1)
您可以在$(this).is(selector)
语句中使用if
来验证您处理的是哪种表单,例如
$(document).on('submit', '#formTwo, #formOne', function(e){
e.preventDefault();
if($(this).is('#formTwo')) {
$.ajax({
type:'POST',
url:'/tools/newsletter/',
data: {
email:$('#email').val(),
csrfmiddlewaretoken:$('#formTwo input[name=csrfmiddlewaretoken]').val(),
},
});
} else if ($(this).is('#formOne')) {
// formOne code
}
$("#modal-progress").modal("hide");
});