Ho un TemplateField in un GridView in un UpdatePanel con un pulsante denominato btnDelete
. Piuttosto che lo standard OnClientClick="return confirm('Are you sure?')"
mi piacerebbe usare jQuery Dialog.jQuery Conferma finestra di dialogo in ASP.NET Pulsante OnClientClick
Finora, sono in grado di impostare jQuery utilizzando btnDelete.Attributes["onclick"]
e impostando il codice della finestra di dialogo jQuery nel code-behind. Tuttavia, invia nuovamente al server in tutti i casi prima che abbia la possibilità di fare clic su "Conferma" o "Annulla".
Ecco il codice HTML che produce:
<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">
Che cosa sto facendo di sbagliato che sta causando questa funzione non bloccare fino a quando fa clic sul pulsante?
Al contrario, la conferma di serie funziona bene:
<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">
Grazie, Mark
UPDATE:
In definitiva, ho dovuto usare UseSubmitBehavior = "false" per ottenere il name = "" attributo per il rendering. Quindi ho dovuto ignorare OnClientClick, impostando il valore su "return;" quindi il default __doPostBack() non viene eseguito. Poi sono stato in grado di cablare un .Live() clicca gestore, che invoca la __doPostBack() su Conferma:
$('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');
});
Invece di avvolgere il codice in una funzione onClick, fare il (funzione vincolante separati da ottenere l'elemento $ ("ctl00_c1_gvTransfers_ctl02_btnDelete"). OnClick() {YOUR CODICE }); –
C'è un plugin facile da usare per farlo qui: http://stackoverflow.com/questions/6457750/form-confirm-before-submit –