質問

簡単な説明:

スクリプトファイルで処理されているクリックイベントを持つスクリプトコントロールがあります。 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');
}
役に立ちましたか?

解決

OKので、グーグルのために物事を正しく表現しようとしてあまりにも多くの時間をかけて自分で解決しました。 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メソッドを呼び出してクリックの発生を停止するだけでした。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top