Я изо всех сил пытаюсь сделать эту работу довольно долгое время. У меня есть следующий код:Как отменить подачу в IE8?
$(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?
Update 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
Это довольно простой пример. Код JavaScript выполнен, но форма все еще отправлена, хотя я установил event.returnValue в false. Что я делаю не так?
Update 2: Я изменил код яваскрипта в упрощенном проекте следующим образом:
$(document).ready(function (event) {
$('form').submit(function (event) {
return false;
});
});
Он работает в IE, но я до сих пор понять, почему он не работает в моем приложении , Спасибо всем за вашу помощь.
Читайте о [событии события jQuery] (http://api.jquery.com/category/events/event-object/). Да 'preventDefault' обычно не поддерживается IE, но jQuery совместим с кросс-браузером, поэтому он делает его доступным для каждого браузера. Поэтому 'event.preventDefault()' * должен * работать. Вы уверены, что передаете объект 'event' в обработчик' submit'? –
Обратите внимание, что при ошибке выполнения в событии 'submit' форма будет отправлена, так как' return false' никогда не будет достигнута. Убедитесь, что вы не получили такую ошибку. –
напишите свой полный код '$ ('form'). Submit (function ...' и мы попытаемся выяснить, что может быть проблемой. –