Кнопка asp.net не вызывает пост назад при повторном нажатии - PullRequest
3 голосов
/ 05 июля 2011

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

<form id="form1" runat="server">
    <div>
        <span id="submitText"></span>
        <br />
        <asp:Button ID="btnSubmitTest" runat="server" Text="Button" 
        OnClientClick="document.getElementById('submitText').innerText='you should not see this after postback';"  />
    </div>
</form>

SubmitText, набор кнопок перед выстрелом, не должен быть виден после обратной передачи. Но если вы нажмете на кнопку очень быстро, случится так, что событие не сработает.

Я думаю, что в данный момент страница загружена не полностью. Или есть другая причина для такого поведения? Как вы справляетесь с этим?

1 Ответ

0 голосов
/ 11 августа 2012

Вы потеряете все обновления javascript dom при обратной передаче. То, что вы объяснили, звучит правильно ... вы видите, что клиентское событие щелчка запускает просто до того, как страница отправляется назад, и dom сбрасывается.

Попробуйте выполнить то же упражнение, заполнив текстовое поле. В этом случае значение будет сохраняться, так как текстовое поле зависит от viewstate. Вы можете поместить runat = "server" в span, но я полагаю, что вам придется вручную присваивать значение viewstate, поскольку я не верю, что htmlgenericcontrols автоматически использует viewstate.

...