如何使用javascript发送表单而不重定向?

时间:2013-05-09 16:20:19

标签: javascript jquery ajax

我习惯使用submit(callback) jQuery方法,在回调中我序列化我的表单并进行ajax post调用。

但这一次,我需要上传一个文件,这个方法似乎不起作用,所以我尝试使用submit() jQuery方法直接提交表单,但我无法避免重定向,我之前调用e.preventDefault();

$('form.input.upload').change(function(e) {
  e.preventDefault();
  $('form.example').submit();
});

1 个答案:

答案 0 :(得分:0)

您必须在preventDefault的{​​{1}}事件中执行onsubmit,而不是<form>的{​​{1}}事件:

onchange

更新:在我编辑之前,我并没有完全正确。点击<input>或在任何有针对性的$("form.example").on("submit", function (e) { // preventing browser's native form submit e.preventDefault(); }); $("form.example input.upload").on("change", function (e) { // auto-submit if input.upload changed $("form.example").submit(); }); 按Enter键都会触发onsubmit事件。但是:如果以编程方式调用<input type="submit">函数,则不会触发事件。

而且,更深入地思考,你真正的问题 - 文件上传 - 比我的回答有点困难。通过评论链接问题对此有一个非常好的答案;)