ASP.Net 脚本控件,从 OnClick 和 FireFox 返回 False

Posted

技术标签:

【中文标题】ASP.Net 脚本控件,从 OnClick 和 FireFox 返回 False【英文标题】:ASP.Net Script Controls, Returning False from OnClick, and FireFox 【发布时间】:2010-09-25 09:09:58 【问题描述】:

简短说明:

我有一个脚本控件,它在脚本文件中处理了单击事件。 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');

【问题讨论】:

【参考方案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 方法来阻止点击触发。

【讨论】:

以上是关于ASP.Net 脚本控件,从 OnClick 和 FireFox 返回 False的主要内容,如果未能解决你的问题,请参考以下文章

ASP.NET服务器控件打开新窗口怎样做到不刷新原页面

ASP.NET分页控件

更新面板 AJAX asp.net 后运行脚本

从 ASP.NET 项目中删除所有内联脚本

ASP.NET后台怎么获取.aspx页面的Checkbox的是不是选中状态?

JS触发ASP.NET服务器端控件的方法