Contrôles de script ASP.Net, Renvoi False de OnClick et FireFox
-
19-08-2019 - |
Question
Explication courte:
J'ai un contrôle de script dont l'événement click est géré dans le fichier de script. Le gestionnaire de clic ouvre une invite de confirmation et renvoie la valeur de l'invite.
Problème:
IE voit le retour False (Annuler est sélectionné dans la case de confirmation) et il n'y a pas de publication. Firefox ignore cela et déclenche la publication.
Solution?:
J'ai lu que si je le faisais à l'ancienne, il me faudrait:
onClick="return SomeMethod();"
Dans le balisage. Espérons qu'il existe un moyen de faire cela avec des contrôles de script?
Exemple:
Voici ce que j'ai dans le fichier de script:
//THIS IS THE METHOD CLICK CALLS
handleLnkDeleteButtonClick: function(e)
{
var confirmed = confirm('This will delete the current Message category and move all messages to the Oprhan cataegory. Continue?');
return confirmed;
},
initialize: function()
{
this._lnkDeleteButton = $get(this._lnkDeleteButtonID);
this._lnkDeleteButton.idpicker = this;
//HOOK BEGINS HERE
this._lnkDeleteButtonClick = Function.createDelegate(this, this.handleLnkDeleteButtonClick);
$addHandler(this._lnkDeleteButton, "click", this._lnkDeleteButtonClick);
//END HOOK HERE
NDI.WebControls.Client.PersonalMessageTypePicker.callBaseMethod(this, 'initialize');
},
dispose: function()
{
$removeHandler(this._lnkDeleteButton, "click", this._lnkDeleteButtonClick);
NDI.WebControls.Client.PersonalMessageTypePicker.callBaseMethod(this, 'dispose');
}
La solution
Ok, j'ai donc résolu le problème après avoir passé trop de temps à essayer d'exprimer correctement les choses pour Google. Il s'avère qu'il existe une méthode à appeler pour que vous n'ayez pas à vous soucier de retourner vrai ou faux.
handleLnkDeleteButtonClick: function(e)
{
var confirmed = confirm('This will delete the currery Message category and move all messages to the Oprhan cataegory. Allow?');
if (!confirmed)
{
e.preventDefault();
}
},
Ainsi, au lieu de renvoyer confirmée, je devais simplement vérifier sa valeur et appeler la méthode e.preventDefault pour empêcher le clic de se déclencher.