Предотвратите ASP.net __ doPostback () из jQuery, отправляют () в UpdatePanel

Я пытаюсь остановиться, обратная передача на форме отправляют, возвращает ли моя пользовательская проверка jQuery false.

Там какой-либо путь состоит в том, чтобы предотвратить __ doPostback () функция, заканчивающаяся из отправления () функция?

Я принял:

$('#aspnetForm').submit(function () { return false; });

добился бы цели, но по-видимому это не имеет место: у кого-либо есть предложение?

Отправление () функция действительно блокирует обратную передачу (это не будет обратная передача, если Вы приостановитесь в точке останова в поджигателе), но я, может казаться, не останавливаю событие, происходящее после отправления (), функция завершена!

С наилучшими пожеланиями, Ed

Править

Хорошо, я имел быструю путаницу об и обнаружил, что то, что кнопка я использую для порождения обратной передачи, связывается с updatepanel, поскольку asyncpostbacktrigger, кажется, проблема: Если я удаляю его как триггер (т.е. вызовите его к продукту полная обратная передача), никакой проблемы, предотвращающей обратную передачу с, возвращает false;

Какие-либо идеи, почему асинхронная обратная передача не была бы stoppable использованием, возвращают false?

5
задан Andras Vass 24 June 2010 в 21:51
поделиться

2 ответа

Вы должны использовать клиентскую часть PageRequestManager для правильной обработки событий отправки AJAX. (например, предотвратить асинхронный postback.)

Если вы не полностью контролируете страницу, на ней может быть JavaScript, который просто вызывает __doPostBack(), не проходя через всю логику страницы. В этом случае - в дополнение к вышесказанному - вы должны сохранить старый window.__doPostBack() и предоставить свой собственный - как упомянул @tucaz в своих комментариях. (...и, как вы упомянули, это может стать довольно запутанным с цепочками). Для обычных сабмитов (не-AJAX) вы можете предоставить обработчик событий, как указали другие.

Эта страница может быть полезна, здесь есть примеры кода, использующие PageRequestManager. In particular:

initialize : function()
{
    ...

    this._onSubmitHandler = Function.createDelegate(this, this._onSubmit);
    this._onPartialUpdateEnd = Function.createDelegate(this, this._onUpdateEnd);

    if (typeof(Sys.WebForms)!== "undefined" && typeof(Sys.WebForms.PageRequestManager)!== "undefined")
    {
        Array.add(Sys.WebForms.PageRequestManager.getInstance()._onSubmitStatements, this._onSubmitHandler);
        Sys.WebForms.PageRequestManager.getInstance().add_endRequest(this._onPartialUpdateEnd);
    }
    else 
        $addHandler(document.forms[0], "submit", this._onSubmitHandler);
},

Edit: Следуя вышеизложенному, вот это, например, у меня работает нормально (.Net 3.5 SP1, Button1 срабатывает в updatepanel, и т.д...):

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<!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="http://ajax.microsoft.com/ajax/jQuery/jquery-1.4.2.js" charset="utf-8"
        type="text/javascript"></script>

</head>
<body>
    <form id="form1" runat="server">
    <asp:ScriptManager ID="ScriptManager1" runat="server">
    </asp:ScriptManager>
    <asp:UpdatePanel ID="UpdatePanel1" runat="server">
        <ContentTemplate>
            <div>
                <asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" />
            </div>
        </ContentTemplate>
        <Triggers>
            <asp:AsyncPostBackTrigger ControlID="Button1" />
        </Triggers>
    </asp:UpdatePanel>
    </form>
    <script type="text/javascript">
        (function($, undefined) {

            var submitHandler = function(e) {
                return false;
            }

            if (typeof (Sys.WebForms) !== "undefined" && typeof (Sys.WebForms.PageRequestManager) !== "undefined") {
                Array.add(Sys.WebForms.PageRequestManager.getInstance()._onSubmitStatements, submitHandler);
            } else {
                $("form").submit(submitHandler);
            }
        })(jQuery);
    </script>
</body>
</html>
5
ответ дан 14 December 2019 в 04:35
поделиться
$('#yourPostButton').click(function(){  
    return false; 
});

Это должно сделать !

3
ответ дан 14 December 2019 в 04:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: