单击控制导致不需要的JS调用

本文关键字:JS 调用 不需要 控制 单击 | 更新日期: 2023-09-27 18:35:54

我有一个意外的行为,当我单击一个控件时,两个JS被调用。只有在特定条件下单击树列表中的按钮时,才应该调用这些 JS。

现在,即使

条件适用时单击树列表的任何节点,也会调用JS"消息警报"。

另一个打开窗口的 JS 也会在单击树列表的节点时打开,但在至少打开和关闭一次之后。

 protected void RadTreeList1_ItemCommand(object sender, TreeListCommandEventArgs e)
{
    string idMessage = "";
    if (e.CommandName == "Select")
    {
        if (e.Item is TreeListDataItem)
        {
            TreeListDataItem item = e.Item as TreeListDataItem;
           idMessage = item.GetDataKeyValue("MessageID").ToString();
        }
    }
    addMessage(idMessage);
}
private void addMessage(string idMessage)
{
    if (Label1.Text =="" || Label1.Text==null )
    {
        ScriptManager.RegisterStartupScript(this, this.GetType(), "Message", "alert('You shall be logged-in to post and replay to messages');", true);
    }
    else
    {   
        {
            Session["fatherMessageID"] = idMessage;
            string script = "<script language='javascript' type='text/javascript'>Sys.Application.add_load(ShowWindow);</script>";
            ClientScript.RegisterStartupScript(this.GetType(), "showWindow", script); 
        }
    }
}

打开窗口的功能:

function ShowWindow() {
        var oWnd = window.radopen('Window1.aspx', 'window1');
    }

从窗口内部关闭窗口的功能:

function GetRadWindow() {
        var oWnd = null;
        if (window.radWindow) oWnd = window.radWindow;
        else if (window.frameElement.radWindow) oWnd = window.frameElement.radWindow;
        return oWnd;
    }
    function CloseWindow() {
        var oWnd = GetRadWindow();
        oWnd.close()
    }

在窗口页面内调用关闭窗口的函数:

 finally
        {  
            string script = "<script language='javascript' type='text/javascript'>Sys.Application.add_load(CloseWindow);</script>";
            ClientScript.RegisterStartupScript(this.GetType(), "CloseWindow", script); 
        }

如何解决此问题?

单击控制导致不需要的JS调用

警报问题:你需要放置addMessage(idMessage);在 if (e.Item is TreeListDataItem) condition

对话框问题:不确定window.radopen('Window1.aspx', 'window1')是否正确。 如果你使用的是RadWindow,那么showwindow函数应该是这样的var oWnd = window.radopen(null, "[RadWindowID]");