Кнопка onClick Обработчик событий никогда не срабатывает только в Chrome - PullRequest
5 голосов
/ 20 января 2012

Я работаю над старым приложением ASP.NET WebForms, которое имеет страницу .aspx со следующим элементом управления:

<asp:Button ID="Budget_Approve" OnClick="Budget_Approve_Click" runat="server"
Visible="True" Width="100" Height="30" Text="Approve"></asp:Button>

Обработчик событий Budget_Approve_Click никогда не срабатывает, и я пытаюсьопределить почему.Я заметил, что при загрузке страницы этот код выполняется для добавления некоторых встроенных js к атрибуту onclick:

Budget_Approve.Attributes.Add("onclick", "return confirm_approve();");

HTML-код, который отображается:

<input type="submit" name="ctl00$mainContent$Budget_Approve" value="Approve"
onclick="return confirm_approve();WebForm_DoPostBackWithOptions(new
WebForm_PostBackOptions(&quot;ctl00$mainContent$Budget_Approve&quot;, 
&quot;&quot;, true, &quot;&quot;, &quot;&quot;, false, false))"
id="ctl00_mainContent_Budget_Approve" style="height:30px;width:100px;">

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

javascript code

Однако обратная передача никогда не происходит, и обработчик событий Budget_Approve_Click никогда не срабатывает.Почему бы нет?

Редактировать: Я попытался удалить строку, которая полностью добавляет встроенный код JavaScript.Тем не менее, до сих пор нет обратной передачи.Для кнопки отображается следующий HTML-код:

<input type="submit" name="ctl00$mainContent$Budget_Approve" 
value="Approve"
onclick="javascript:WebForm_DoPostBackWithOptions(new
WebForm_PostBackOptions(&quot;ctl00$mainContent$Budget_Approve&quot;,
&quot;&quot;, true, &quot;&quot;, &quot;&quot;, false, false))"
id="ctl00_mainContent_Budget_Approve" style="height:30px;width:100px;" />

Обновление: Обнаружено, что обратная передача работает в в IE, но все еще не в Chrome.Существуют ли какие-либо специфические для браузера настройки или проблемы, которые могут вызвать эту проблему?

Ответы [ 3 ]

3 голосов
/ 20 января 2012

Я бы просто обошёл это так:

Budget_Approve.Attributes.Add("onclick", "if (!confirm_approve()) return false;");
1 голос
/ 20 января 2012

Попробуйте это ...

Budget_Approve.Attributes.Add("onclick", "if (!confirm_approve()) return false;");
0 голосов
/ 23 марта 2012

Проверьте, не заблокирована ли ваша кнопка.

$ ("input [type = 'submit']"). Attr ("disabled", "disabled");

Если что-то подобное произойдет, у Chrome будет неполный запрос POST. ASP.NET не будет запускать события на стороне сервера.

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