Pergunta

Explicação sucinta:

Eu tenho um controle de script que tem o evento de clique a ser tratados no arquivo script. O manipulador Click aparece uma confirmação imediata e retorna o valor do alerta.

Problema:

IE vê o falso retorno (Cancelar for selecionado na caixa de confirmação) e não há nenhuma postagem. Firefox ignora esta e dispara a postagem.

Solução:

Eu li que se eu fosse fazer isso à maneira antiga, eu precisaria ter:

onClick="return SomeMethod();"

Na marcação. Não espero é uma maneira de fazer isso com controles de script?

Exemplo:

Aqui está o que eu tenho no arquivo 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');
}
Foi útil?

Solução

Ok, então resolvi eu mesmo depois de cerca de tempo demais tentando frase coisas corretamente para google. Acontece que existe um método para chamar para que você não precisa se preocupar em retornar verdadeiro ou 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();
    }
},

Então, ao invés de retornar confirmada, eu simplesmente tinha que verificar o valor da TI e chamar o método e.preventDefault para parar o clique do disparo.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top