繁体   English   中英

如何在IE8中取消提交?

[英]How to cancel submit in IE8?

我一直在努力使其工作一段时间。 我有以下代码:

$(document).ready(function (event) {
    $('form').submit(function (event) {
    ...
    });
});

我在包括jQuery网站在内的大多数地方都发现,这将阻止表单的提交:

return false;

没有。

接下来,我已经阅读了本网站上的所有相关问题和解答,并尝试了全部。 在Chrome和Firefox中,此方法有效:

event.preventDefault();

在IE8中没有。 我读过IE不支持此功能,我们应该使用以下功能:

event.returnValue = false;

尽管有几个人确认它对他们有用 (例如event.preventDefault()函数在IE中不起作用。有什么帮助吗? ),但对我而言却不行。 我不确定为什么。 我有一个带有“提交”按钮的表单,没什么特别的,但是,即使我只放了这段代码,表单仍然被提交:

$(document).ready(function (event) {
    $('form').submit(function (event) {
        event.returnValue = false;
    });
});

有任何想法吗?

最后一件事:我读到我们应该在调用preventDefault()之前先进行测试:

if (event.preventDefault) { event.preventDefault(); }

但是在IE8中,event.preventDefault存在,并且不会引发任何错误。 如果IE不支持怎么办?

更新1:我尝试使用以下代码进行简化:

CancelSubmitTest.aspx:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="CancelSubmitTest.aspx.cs" Inherits="HtmlEditor.CancelSubmitTest" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
    <script src="Scripts/jquery-1.4.1.min.js" type="text/javascript"></script>
    <script src="Scripts/CancelSubmit.js" type="text/javascript"></script>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:Button ID="SaveButton" runat="server"
            Text="Save" OnClick="SaveButtonClick" CausesValidation="true" ValidationGroup="SomeValidationGroup" />
    </div>
    </form>
</body>
</html>

CancelSubmitTest.aspx.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace HtmlEditor
{
    public partial class CancelSubmitTest : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {

        }

        protected void SaveButtonClick(object sender, EventArgs e)
        {

        }
    }
}

取消提交.js

$(document).ready(function (event) {
    $('form').submit(function (event) {
        event.returnValue = false;
    });
});

这是一个非常简单的例子。 尽管我将event.returnValue设置为false,但已执行JavaScript代码,但仍提交表单。 我究竟做错了什么?

更新2:我更改了简化项目中的javascript代码,如下所示:

$(document).ready(function (event) {
    $('form').submit(function (event) {
        return false;
    });
});

它可以在IE中运行,但是我仍然必须弄清楚为什么它在我的应用程序中不起作用。 感谢大家的帮助。

return false等于event.returnValue

但有时由于DOM兼容性而无法正常工作

例如:

// Not Working
OnClientClick="return confirm('Are you sure want to Delete this file?');"

// Working
OnClientClick="event.returnValue=confirm('Are you sure want to Delete this file?');"
  1. 它确实起作用: http : //jsfiddle.net/AEC2U/
  2. 问题出在代码的其他地方。
  3. 发布更多无效的代码/示例。
$(document).ready(function () {
    $('form').submit(function () {
        alert( 'test' )        
        return false;
    });
});

这对我来说在IE8中没有问题。 如果我做的所有事情都摆脱了两个传递的事件变量

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM