2012-08-16 44 views
0

我有以下代码在开发机器上工作正常。但是,当我将它部署到IIS时,the .click()不会触发。asp.net javascript .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()事件停止发射。

请让我知道如果代码中有任何错误。

回答

2

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

我改变了ButtonClick函数,使用__doPostBack函数创建手动回发页。

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

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

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

如果回发事件目标从__doPostBack方法分配的事件目标相匹配,然后我打电话的方法来更新状态。

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

0

如果代码工作正常,您的PC上,看起来腥我的唯一的事情是这两条线:

1. document.getElementById('ctl00_ContentPlaceHolder1_btnUpdateStatus'); 

2. btnUpdateStatus.setAttribute("onclick", ""); 

对于第一线,你应该这样做,而不是:

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

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

它可能不是问题。最好的办法是用Firebug进行调试,在被调用的适当的Javascript函数中放置一个断点。

+0

嗨我已经按照你的建议,但它会给出以下错误。 Controls集合不能被修改,因为控件包含代码块(即<% ... %>)。 但我用#替换了=,可以摆脱错误。但部署后仍存在问题。 我使用了一些警报来确定代码被执行到什么地方,并发现整个Javascript被执行。但是,不会调用按钮点击方法。 请帮忙。 – 2012-09-03 07:22:43

相关问题