Domanda

Breve spiegazione:

Ho un controllo di script che ha l'evento click gestito nel file di script. Il gestore Click fa apparire un prompt di conferma e restituisce il valore del prompt.

Problema:

IE vede il ritorno False (Annulla è selezionato nella casella di conferma) e non c'è postback. Firefox lo ignora e attiva il postback.

Soluzione:?

Ho letto che se lo avessi fatto alla vecchia maniera, avrei dovuto:

onClick="return SomeMethod();"

Nel markup. Speriamo che ci sia un modo per farlo con i controlli degli script?

Esempio:

Ecco cosa ho nel file di 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');
}
È stato utile?

Soluzione

Ok, l'ho risolto da solo dopo troppo tempo nel tentativo di pronunciare correttamente le cose per google. Si scopre che esiste un metodo per chiamare in modo da non doversi preoccupare di restituire vero o falso.

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();
    }
},

Quindi, invece di tornare confermato, ho semplicemente dovuto controllare il suo valore e chiamare il metodo e.preventDefault per interrompere l'attivazione del clic.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top