2011-01-25 3 views
0

Я изо всех сил пытаюсь сделать эту работу довольно долгое время. У меня есть следующий код:Как отменить подачу в 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, но я до сих пор понять, почему он не работает в моем приложении , Спасибо всем за вашу помощь.

+0

Читайте о [событии события jQuery] (http://api.jquery.com/category/events/event-object/). Да 'preventDefault' обычно не поддерживается IE, но jQuery совместим с кросс-браузером, поэтому он делает его доступным для каждого браузера. Поэтому 'event.preventDefault()' * должен * работать. Вы уверены, что передаете объект 'event' в обработчик' submit'? –

+3

Обратите внимание, что при ошибке выполнения в событии 'submit' форма будет отправлена, так как' return false' никогда не будет достигнута. Убедитесь, что вы не получили такую ​​ошибку. –

+0

напишите свой полный код '$ ('form'). Submit (function ...' и мы попытаемся выяснить, что может быть проблемой. –

ответ

1
  1. Это делает работу: http://jsfiddle.net/AEC2U/
  2. Проблема где-то еще в вашем коде.
  3. Опубликовать больше кода/убрать пример, где он не работает.
0
$(document).ready(function() { 
    $('form').submit(function() { 
     alert('test')   
     return false; 
    }); 
}); 

Это не работает для меня не проблема в IE8. Если что-то все, что я сделал, было избавиться от двух переданных переменных событий

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?');" 
Смежные вопросы