Хотя вы должны использовать btnNext.ClientID
, это не является причиной вашей проблемы здесь. Проблема заключается в том, что используемая вами библиотека использует обратные вызовы для реализации всплывающего окна подтверждения, что означает, что функция, которую вы присоединяете к событию click
, не ожидает нажатия диалогового окна подтверждения перед выходом. Поскольку false
не возвращается из этой функции, нажатие кнопки не отменяется, и происходит обратная передача.
См. Принятый ответ здесь для получения дополнительной информации:
Можете ли вы дождаться обратного вызова javascript?
Одним из способов решения этой проблемы является всегда возвращать значение false, а затем при обратном вызове после подтверждения нажать кнопку. Имейте в виду, что вам придется unbind
обработчик событий перед вызовом click
вручную. Следующий код работал для меня:
$(document).ready(function () {
$("#<%= btnNext.ClientID %>").bind('click', function () {
jConfirm('Can you confirm this?', 'Confirmation Dialog', function (r) {
if (r == true) {
//Unbind client side click event and submit btnNext
$("#<%= btnNext.ClientID %>").unbind('click');
$("#<%= btnNext.ClientID %>").click();
}
});
//Always prevent a postback by returning false
return false;
});
});