[英]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?');"
$(document).ready(function () {
$('form').submit(function () {
alert( 'test' )
return false;
});
});
这对我来说在IE8中没有问题。 如果我做的所有事情都摆脱了两个传递的事件变量
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.