Tôi có một TemplateField trong một GridView trong một UpdatePanel với một nút gọi là btnDelete
. Thay vì tiêu chuẩn OnClientClick="return confirm('Are you sure?')"
Tôi muốn sử dụng Hộp thoại jQuery.Hộp thoại xác nhận jQuery trong nút ASP.NET OnClientClick
Cho đến giờ, tôi có thể đặt jQuery bằng cách sử dụng btnDelete.Attributes["onclick"]
và đặt mã hộp thoại jQuery trong mã sau. Tuy nhiên, nó đăng lại máy chủ trong mọi trường hợp trước khi tôi có cơ hội nhấp vào "Xác nhận" hoặc "Hủy".
Dưới đây là HTML nó tạo ra:
<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">
Tôi đang làm gì sai đó gây ra chức năng này không để chặn cho đến khi một trong hai nút được nhấp?
Ngược lại, xác nhận tiêu chuẩn làm việc tốt:
<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">
Cảm ơn, Đánh dấu
UPDATE:
Cuối cùng, tôi đã phải sử dụng UseSubmitBehavior = "false" để có được những thuộc tính name = "" để hiển thị. Sau đó, tôi đã phải ghi đè lên các OnClientClick, thiết lập giá trị để "trở lại;" do đó, mặc định __doPostBack() không được thực hiện. Sau đó, tôi đã có thể để dây lên một .live() bấm điều khiển, mà gọi các __doPostBack() trên Confirm:
$('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');
});
Thay vì gói mã của bạn trong một chức năng onClick, làm các ràng buộc tách ra bằng cách nhận các yếu tố $ ("ctl00_c1_gvTransfers_ctl02_btnDelete"). OnClick (function() {BẠN MÃ}); –
Có một plugin dễ sử dụng để thực hiện tại đây: http://stackoverflow.com/questions/6457750/form-confirm-before-submit –