J'ai trouvé ce problème deux ou trois fois, lors de l'utilisation ASP: CheckBoxes avec la propriété AutoPostBack définie sur true.
Si cette propriété est vrai, ASP .NET crée un événement onclick laid en ligne sur le code HTML généré comme ceci:
<input id="CheckBox1" type="checkbox" name="CheckBox1"
onclick="javascript:setTimeout('__doPostBack(\'CheckBox1\',\'\')', 0)" />
Donc, si vous définissez à nouveau l'événement onclick, il sera outrepassée, et le PostBack ne se produira pas.
J'ai trouvé une solution de contournement à cela, consiste essentiellement à stocker l'événement onclick d'origine qu'ASP .NET génère, et affecter une nouvelle fonction onclick, qui affichera la confirmation, et si l'utilisateur sélectionne cancel, retournera false, sinon l'événement click original sera exécuté normalement avec le droit objet de contexte et de l'événement, et le postback se produira, par exemple:
window.onload = function() {
var checkBox1 = document.getElementById('<%=CheckBox1.ClientID %>'),
originalOnClick = checkBox1.onclick; // store original click event
checkBox1.onclick = function(e) {
if (confirm('Are you sure?')) {
originalOnClick.call(this, e); // call the original click with the right
// context and event object
} else {
return false; // cancel the click
}
};
};