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');
}
Était-ce utile?

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top