Похоже, демон Internet Explorer снова ударил, и я не могу понять это:
У меня есть ImageButton, использующий OnCommand для удаления определенной записи из моей базы данных. Однако я реализовал его так, чтобы пользователь сначала подтвердил, что он хочет удалить конкретный элемент.
Вот код для моего ImageButton
<asp:ImageButton runat="server" ID="imgDelete" ImageUrl="~/Controls/TaskDetails/Images/delete.png" OnCommand="Tag_DeleteCommand" Visible='<%# CanDelete %>' OnClientClick="javascript:confirmDialog(this, 'Remove Tag','Are you sure you want to remove this tag?', 1); return false;"
CommandArgument='<%# Eval("TagID") %>' />
А вот моя функция ConfirmDialog
function confirmDialog(sender, title, message, type) {
//type entities
//1 = warning
//2 = error
//3 = success
//4 = Information
var sender = $(sender);
$("#message_dialog_inner_text").html(message);
$("#message_dialog_message_container").dialog({
modal: true,
title: title,
zIndex: 10003,
dialogClass: (type > 0) ? "message_dialog_type_" + type : "",
position: 'center',
buttons: {
"OK": function () {
//the yes option was selected, we now disable the onclientclick event, and fire the click event.
$(this).dialog("close");
if (sender.hasAttr("href")) {
window.location = sender.attr('href');
} else {
sender.removeAttr("onclick");
sender.trigger("click");
}
},
"Cancel": function () { $(this).dialog("close"); }
}
});
return false;
}
Это прекрасно работает в Chrome, FF, Safari, но IE просто игнорирует его и выполняет обратную передачу. Я даже изменил свой OnClientClick на «return false;» и это, кажется, не влияет на кнопку, отправляющую назад. Я также изменил его с ImageButton на просто кнопку, но безрезультатно. Я предполагаю, что это как-то связано с событием OnCommand, но я в недоумении! Я реализовал это довольно большое приложение, поэтому я хотел бы управлять масштабом изменений. Если у кого-то есть какой-либо вклад, это будет с благодарностью!
EDIT
Хорошо, позвольте мне также подчеркнуть, что я не хочу, чтобы он отправлял обратно, и даже если у меня просто OnClientClick = "return false;" командная кнопка все еще отправляет обратно (не то, что вы ожидаете).
Вот визуализированная разметка из моего элемента управления ImageButton
<input type="image" name="ctl00$body$pnlContentRight$pnlCurrentTaskDetails$repTags$ctl00$tagItem$imgDelete" id="ctl00_body_pnlContentRight_pnlCurrentTaskDetails_repTags_ctl00_tagItem_imgDelete" src="Controls/TaskDetails/Images/delete.png" onclick="javascript:confirmDialog(this, 'Remove Tag','Are you sure you want to remove this tag?', 1); return false;" style="border-width:0px;">