5

我正在提交一个表单,我想阻止提交操作,直到我执行一些其他操作,例如显示文件上传的进度条。我根据诸如event.preventDefault() function not working in IE之类的 SO 问题设置了此代码。

$(document).ready(function(){
    $("#fileform").submit(function(e){
        if(!e) e = window.event;
        if (e.preventDefault){
            // Firefox, Chrome
            e.preventDefault();
        }else{
            // Internet Explorer
            e.returnValue = false;
        }

        // other code
    }
}

在 Firefox 和 Chrome 中一切正常;提交动作被阻止,出现进度条,然后当我告诉它提交表单时。但是,在 IE 10 中,if 语句的第一个条件被执行,并且表单似乎正在尝试提交(IE 10 的提交气泡出现)。为什么要执行第一个条件?

IE 10 是否支持 IE 8 和 9 不支持的 preventDefault()?如果是这样,我该如何正确处理阻止 IE 8、9、10 中不会干扰 Firefox、Chrome、Safari 等的表单提交操作?

4

2 回答 2

8

只需执行以下操作,jQuery 已经为您完成了跨浏览器的工作。

$("#fileform").submit(function(e){
   e.preventDefault();
   // other code
});
于 2013-06-19T06:29:09.117 回答
0

还尝试输入以下内容:

e.stopPropagation();

e.preventDefault();

http://api.jquery.com/event.preventDefault/

http://api.jquery.com/event.stopPropagation/

如果您阅读:停止提交表单,使用 Jquery

你会看到的:

Becoz e.preventDefault() is not supported in IE. In IE it is e.returnValue = false

修改后的代码:

   $("#fileform").submit(function(e){
        if(!e) e = window.event;

         e.preventDefault();
         e.stopPropagation();

        // other code, do something here
        return true; // or false if something goes wrong
    }
于 2013-06-19T06:30:01.153 回答