Pregunta

Explicación breve:

Tengo un control de script que tiene el evento click que se maneja en el archivo de script. El controlador Click muestra una solicitud de confirmación y devuelve el valor de la solicitud.

Problema :

IE ve la devolución False (se selecciona Cancelar en el cuadro de confirmación) y no hay devolución de datos. Firefox ignora esto y dispara la devolución de datos.

¿Solución ?:

Leí que si estuviera haciendo esto a la antigua usanza, necesitaría tener:

onClick="return SomeMethod();"

En el marcado. Con suerte, ¿hay alguna manera de hacer esto con los controles de script?

Ejemplo :

Esto es lo que tengo en el archivo 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');
}
¿Fue útil?

Solución

Ok, lo resolví yo mismo después de demasiado tiempo tratando de formular las palabras correctamente para Google. Resulta que hay un método para llamar para que no tenga que preocuparse por devolver verdadero 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();
    }
},

Entonces, en lugar de volver confirmado, simplemente tuve que verificar su valor y llamar al método e.preventDefault para evitar que se active el clic.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top