Я пытаюсь отключить кнопку, когда пользователь отправляет форму платежа, а код для отправки формы вызывает двойную запись в firefox. Эта проблема не возникает при удалении кода и не встречается ни в одном браузере, кроме Firefox.Отключить кнопку после отправки
Любая идея, как предотвратить двойной пост здесь?
System.Text.StringBuilder sb = new StringBuilder();
sb.Append("if (typeof(Page_ClientValidate) == 'function') { ");
sb.Append("if (Page_ClientValidate() == false) { return false; }} ");
sb.Append("this.value = 'Please wait...';");
sb.Append("this.disabled = true;");
sb.Append(Page.GetPostBackEventReference(btnSubmit));
sb.Append(";");
btnSubmit.Attributes.Add("onclick", sb.ToString());
это sb.append (Page.GetPostBackEventReference (btnSubmit)) линия, которая вызывает проблему
Благодарности
EDIT: Вот с # кнопки:
<asp:Button ID="cmdSubmit" runat="server" Text="Submit" />
вот html
Этот код дважды вводит (и отключает кнопку отправки и проверяет ввод):
<input type="submit" name="ctl00$MainContent$cmdSubmit" value="Submit" onclick="if (typeof(Page_ClientValidate) == 'function') { if (Page_ClientValidate() == false) { return false; }} this.value = 'Please wait...';this.disabled = true;document.getElementById('ctl00_MainContent_cmdBack').disabled = true;__doPostBack('ctl00$MainContent$cmdSubmit','');" id="ctl00_MainContent_cmdSubmit" />
сообщений Этот код дважды (но не отключить кнопку отправки):
<input type="submit" name="ctl00$MainContent$cmdSubmit" value="Submit" onclick="__doPostBack('ctl00$MainContent$cmdSubmit','');" id="ctl00_MainContent_cmdSubmit" />
Этот код сообщения один раз (но не проверяет ввод пользователя и не отключает кнопка отправить):
<input type="submit" name="ctl00$MainContent$cmdSubmit" value="Submit" id="ctl00_MainContent_cmdSubmit" />
Этот код сообщения один раз (но не отключить кнопку отправки):
<input type="submit" name="ctl00$MainContent$cmdSubmit" value="Submit" onclick="javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions("ctl00$MainContent$cmdSubmit", "", true, "", "", false, false))" id="ctl00_MainContent_cmdSubmit" />
Этот код не размещать на всех:
<input type="submit" name="ctl00$MainContent$cmdSubmit" value="Submit" onclick="this.disabled = true;WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions("ctl00$MainContent$cmdSubmit", "", true, "", "", false, false))" id="ctl00_MainContent_cmdSubmit" />
Очевидно, что это отключение кнопки отправки, который ставит проблему. У вас есть идеи, как мы можем отключить отправку, чтобы избежать множественного нажатия?
Когда я удалить эту линию он фактически не представить. У меня есть это прикрепленное к кнопке, но оно никогда не вызывает эту функцию, когда этой строки нет: this.btnSubmit.Click + = new EventHandler (btnSumbit_Click); – 2008-11-13 03:34:49
Хм. Можете ли вы попробовать добавить return true; до конца вашего блока JavaScript и посмотреть, что произойдет? – 2008-11-13 04:07:45