我在UpdatePanel的GridView中使用名爲btnDelete
的按鈕來創建TemplateField。我想使用jQuery對話框而不是標準OnClientClick="return confirm('Are you sure?')"
。ASP.NET按鈕中的jQuery確認對話框OnClientClick
到目前爲止,我可以使用btnDelete.Attributes["onclick"]
設置jQuery,並在代碼隱藏中設置jQuery對話框代碼。但是,在我有機會單擊「確認」或「取消」之前,它會在所有情況下回傳給服務器。
這裏是它產生的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">
謝謝, 馬克
UPDATE:
最終,我不得不使用UseSubmitBehavior = 「假」 來獲得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');
});
而是在一個onClick函數來包裝一下你的代碼,做結合,通過獲取元素$( 「ctl00_c1_gvTransfers_ctl02_btnDelete」)分開。的onClick(函數(){YOUR CODE}); – 2010-10-28 20:23:24
這裏有一個易於使用的插件:http://stackoverflow.com/questions/6457750/form-confirm-before-submit – 2012-09-27 11:29:00