J'ai un TemplateField dans un GridView dans un UpdatePanel avec un bouton appelé btnDelete
. Plutôt que la norme OnClientClick="return confirm('Are you sure?')"
je voudrais utiliser jQuery Dialog.jQuery Confirmer la boîte de dialogue dans le bouton ASP.NET OnClientClick
Jusqu'à présent, je suis en mesure de définir le jQuery en utilisant btnDelete.Attributes["onclick"]
et en définissant le code jQuery Dialog dans le code-behind. Toutefois, il publie dans tous les cas sur le serveur avant de pouvoir cliquer sur "Confirmer" ou "Annuler".
Voici le code HTML qu'il produit:
<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">
Qu'est-ce que je fais mal qui cause cette fonction ne pas bloquer jusqu'à ce que le bouton est cliqué?
A l'inverse, la confirmation norme fonctionne très bien:
<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">
Merci, Mark
MISE À JOUR:
En fin de compte, je devais utiliser UseSubmitBehavior = "false" pour obtenir la name = "" attribut à rendre. Ensuite, j'ai dû redéfinir OnClientClick, en définissant la valeur sur "return"; la valeur par défaut __doPostBack() n'est donc pas exécutée. Ensuite, j'ai pu câbler un .live() cliquez sur gestionnaire, qui invoque la __doPostBack() sur Confirmer:
$('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');
});
Au lieu d'envelopper votre code dans une fonction onClick, faire la onClick (function() de liaison séparée en obtenant l'élément $ ("ctl00_c1_gvTransfers_ctl02_btnDelete"). {VOTRE CODE}); –
Il existe un plugin facile à utiliser pour le faire ici: http://stackoverflow.com/questions/6457750/form-confirm-before-submit –