Ich habe ein TemplateField in einem GridView in einem UpdatePanel mit einer Schaltfläche namens btnDelete
. Anstatt den Standard OnClientClick="return confirm('Are you sure?')"
möchte ich jQuery Dialog verwenden.jQuery Confirm Dialogfeld in ASP.NET Button OnClientClick
Bis jetzt kann ich die jQuery mit btnDelete.Attributes["onclick"]
setzen und den jQuery Dialog Code im Code-Behind setzen. Es wird jedoch in jedem Fall zurück an den Server gesendet, bevor ich die Möglichkeit habe, auf "Bestätigen" oder "Abbrechen" zu klicken. Hier
ist die HTML es produziert:
<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">
Was mache ich falsch, dass die Ursache dieser Funktion nicht zu blockieren, bis entweder Schaltfläche geklickt wird?
umgekehrt die Standard bestätigen funktioniert gut:
<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">
Danke, Mark
UPDATE:
Letztlich hatte ich UseSubmitBehavior = "false" zu verwenden, die bekommen name = "" Attribut zum Rendern. Dann musste ich OnClientClick überschreiben und den Wert auf "return" setzen. also wird der Standard __doPostBack() nicht ausgeführt. Dann konnte ich einen .live() klicken Handler verkabeln, die die __doPostBack() auf Bestätigen ruft:
$('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');
});
Stattdessen Ihren Code in einer onClick Funktion der Verpackung, tut das, indem sie das Element $ getrennt Bindung ("ctl00_c1_gvTransfers_ctl02_btnDelete"). OnClick (function() {SIE CODE}); –
Es gibt ein einfach zu bedienendes Plugin, um es hier zu tun: http://stackoverflow.com/questions/6457750/form-confirm-before-submit –