У меня есть TemplateField в GridView в UpdatePanel с кнопкой с именем btnDelete
.Вместо стандартного OnClientClick="return confirm('Are you sure?')"
я бы хотел использовать jQuery Dialog.
Пока что я могу установить jQuery с помощью btnDelete.Attributes["onclick"]
и установить код jQuery Dialog в коде позади.Тем не менее, он отправляет обратно на сервер во всех случаях, прежде чем у меня есть возможность нажать «Подтвердить» или «Отмена».
Вот HTML-код, который он производит:
<input type="submit" rel="Are you sure?" class="action-link delete" id="ctl00_c1_gvTransfers_ctl02_btnDelete" onclick="return function() {
$('#delete-transfer-confirm').dialog({
buttons: {
'Confirm' : function() { $(this).dialog('close'); return true; },
'Cancel' : function() { $(this).dialog('close'); return false; }
}
});
$('p.message').text($(this).attr('rel'));
$('#delete-transfer-confirm').dialog('open');
};" value="Delete" name="ctl00$c1$gvTransfers$ctl02$btnDelete">
Что я делаю неправильно, из-за чего эта функция не блокируется, пока не нажата ни одна из кнопок?
И наоборот,стандартное подтверждение работает отлично:
<input type="submit" class="action-link delete" id="ctl00_c1_gvTransfers_ctl02_btnDelete" onclick="try{if (!window.confirm('Are you sure?')){return false;};}catch(e1){alert("Unexpected Error:\n\n" + e1.toString());return false;};" value="Delete" name="ctl00$c1$gvTransfers$ctl02$btnDelete">
Спасибо, Марк
ОБНОВЛЕНИЕ:
В конечном итоге мне пришлось использовать UseSubmitBehavior = "false", чтобыполучить атрибут name = "" для отображения.Затем мне пришлось переопределить OnClientClick, установив значение «return»;поэтому __doPostBack () по умолчанию не выполняется.Затем я смог подключить обработчик щелчков .live (), который вызывает __doPostBack () при подтверждении:
$('input.delete').live('click', function(e) {
var btnDelete = $(this);
alert($(btnDelete).attr('name'));
e.preventDefault();
$('#delete-transfer-confirm').dialog({
buttons: {
'Confirm': function() {
$(this).dialog('close');
__doPostBack($(btnDelete).attr('name'), '');
return true;
},
'Cancel': function() {
$(this).dialog('close');
return false;
}
}
});
$('p.message').text($(this).attr('rel'));
$('#delete-transfer-confirm').dialog('open');
});