asp.net javascript .click() 事件未在服务器上触发

asp.net javascript .click() event not firing on server

本文关键字:服务器 事件 javascript net click asp      更新时间:2023-09-26

我有以下代码,在开发机器上运行良好。但是,当我将其部署到 IIS 时,the .click()不会触发。

  1. 有下拉框,当选择状态时,我添加以下代码以打开 RadWindow

    if (ddlStatusID.SelectedValue.ToString() == "2")
         btnUpdateStatus.Attributes.Add("onclick", "return OpenWindow2('" + 
         ResolveUrl("~/Request/AddBillableTime.aspx?  RequestId=" + RequestId.ToString()) +  
    "','650','320');");
    else
       btnUpdateStatus.Attributes.Add("onclick", "");
    
  2. 在弹出页面中,当用户单击我添加的按钮时,执行以下操作

    ClientScript.RegisterStartupScript(this.GetType(), "CloseWindow", 
     "ClosePopup();", true);
    

这是ClosePopup javascript。

function ClosePopup() {
    //debugger;
    alert('This is before closing the window');
    var oWindow = GetRadWindow();
    oWindow.argument = null;
    oWindow.close();
    alert('This is after closing the window');
    oWindow.BrowserWindow.ButtonClick();
    }
  1. 在主窗口中,我有以下javascript,它在上述javascript的最后一行中被调用。

    function ButtonClick() {
    //debugger;
    alert('This is before button click!');
    var btnUpdateStatus =   
    document.getElementById('ctl00_ContentPlaceHolder1_btnUpdateStatus');
    alert('This is getting the button!');
    btnUpdateStatus.setAttribute("onclick", "");
    alert('This is setting the button!');
    btnUpdateStatus.click();
    alert('This is after clicking the button!');
    

    }

我已经使用警报来检查javascript函数的执行程度。

当我使用 Visual Studio 运行它以及在本地 IIS 服务器中托管它时,整个功能运行良好。但是,当我将其部署到服务器时,click() 事件停止触发。

如果代码中有任何错误,请告诉我。

我没有

时间研究这个问题,因为我被分配到了一项新任务。但是一旦我回到同一个任务中,就必须修复它。我从我的一个朋友那里得到了一些帮助来解决这个问题。我不得不稍微改变当前的逻辑,并在下面解释了解决方案。

我更改了ButtonClick函数,如下所示,以使用 __doPostBack 函数创建手动回发到页面。

function ButtonClick() {
__doPostBack('btnUpdatePage', '');
return;
}

我处理了从页面的Page_Load方法返回的帖子。

if (Request["__EVENTTARGET"] == "btnUpdatePage")
{
     UpdateStatus();
}

如果回发事件目标与 __doPostBack 方法中分配的事件目标匹配,则我调用了一个方法来更新状态。

这样我就可以避免这个问题。但我不知道为什么不使用旧的ButtonClick函数触发该事件。

如果代码在您的 PC 上运行良好,那么对我来说唯一看起来可疑的是这 2 行:

1. document.getElementById('ctl00_ContentPlaceHolder1_btnUpdateStatus');
2. btnUpdateStatus.setAttribute("onclick", "");

对于第一行,您应该这样做,而不是:

document.getElementById('<%=btnUpdateStatus.ClientID%>');

对于第二行,似乎您将onclick处理程序设置为""基本上不应该执行任何操作。

这可能根本不是问题。最好的办法是用Firebug调试它,在被调用的相应Javascript函数中放置一个断点。