我一直在努力使这项工作相当长一段时间。我有以下代码:
$(document).ready(function (event) {
$('form').submit(function (event) {
...
});
});
我在大多数地方发现,包括在jQuery网站上,这会阻止提交表单:
return false;
没有。
接下来,我已阅读本网站上的所有相关问题和答案,并全力以赴。 在Chrome和Firefox中,这有效:
event.preventDefault();
在IE8中没有。我已经读过IE不支持这个,我们应该使用它:
event.returnValue = false;
虽然有几个人确认它对他们有用(例如event.preventDefault() function not working in IE. Any help?),但它并不适合我。我不知道为什么会这样。我有一个带有提交按钮的表单,没什么特别的,但是,即使我只放了这段代码,表单仍然会提交:
$(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)
{
}
}
}
CancelSubmit.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,但我仍然需要弄清楚为什么它在我的应用程序中不起作用。感谢大家的帮助。
答案 0 :(得分:1)
答案 1 :(得分:1)
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?');"
答案 2 :(得分:0)
$(document).ready(function () {
$('form').submit(function () {
alert( 'test' )
return false;
});
});
这对我来说在IE8中没问题。如果我所做的一切都是摆脱了两个传递的事件变量