1

簡単な説明:

スクリプト ファイルで処理されるクリック イベントを持つスクリプト コントロールがあります。Click ハンドラーは確認プロンプトをポップアップ表示し、プロンプトの値を返します。

問題:

IE では False が返され (確認ボックスで [キャンセル] が選択されている)、ポストバックはありません。Firefox はこれを無視し、ポストバックを起動します。

解決?:

これを昔ながらの方法で行う場合、次のものが必要になると読みました。

onClick="return SomeMethod();"

マークアップで。うまくいけば、スクリプト コントロールでこれを行う方法はありますか?

例:

スクリプトファイルにあるものは次のとおりです。

//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');
}
4

1 に答える 1

1

さて、グーグルのために物事を正しく表現しようとしてあまりにも多くの時間を費やした後、自分でそれを解決しました。trueまたはfalseを返すことを心配する必要がないように呼び出すメソッドがあることがわかりました。

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

したがって、確認済みを返す代わりに、値を確認し、e.preventDefaultメソッドを呼び出して、クリックの発生を停止するだけで済みました。

于 2008-12-04T17:56:22.657 に答える