Как отменить отправку в IE8? - PullRequest
0 голосов
/ 25 января 2011

Я изо всех сил пытался сделать эту работу в течение достаточно долгого времени.У меня есть следующий код:

$(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;
    });
});

Есть идеи?

ПоследнееВещи: я читал, что мы должны сначала проверить это перед вызовом protectDefault ():

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;
    });
});

Это довольно простой пример.Код JavaScript выполняется, но форма все еще отправляется, хотя я установил для event.returnValue значение false.Что я делаю не так?

Обновление 2: Я изменил код JavaScript в упрощенном проекте следующим образом:

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

Он работает в IE, но яеще нужно выяснить, почему это не работает в моем приложении.Спасибо всем за помощь.

Ответы [ 3 ]

1 голос
/ 18 сентября 2012

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 голос
/ 25 января 2011
  1. Это работает: http://jsfiddle.net/AEC2U/
  2. Проблема в другом месте вашего кода.
  3. Опубликуйте больше кода / урезанного примера, где это не работает.
0 голосов
/ 25 января 2011
$(document).ready(function () {
    $('form').submit(function () {
        alert( 'test' )        
        return false;
    });
});

Это работает для меня без проблем в IE8. Во всяком случае, все, что я сделал, это избавился от двух переданных переменных события

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...