0

我不确定我是否以最好的方式表达了这个问题,所以我将展示我的代码示例。

我有多个使用相同 javascript 函数的页面。我没有将该功能添加到每个页面,而是将其添加到 .js 中并将其导入到站点主控器中。如何将处理程序添加到将调用该函数的对象,我拥有它的方式似乎不起作用。

编辑:我发现问题出在

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

javascript函数确实被正确调用并且页面确实有一个PostBackButton asp按钮,但是getelement返回null。

//chart-ajaxDateSelection.js
function dateSelectionChanged(sender, args) {
  selectedDate = sender.get_selectedDate();

  document.getElementById('<%= PostBackButton.ClientID %>').click();
}

function getSlide()
{
  var i,x,y,ARRcookies=document.cookie.split(";");
  for (i=0;i<ARRcookies.length;i++)
  {
    x=ARRcookies[i].substr(0,ARRcookies[i].indexOf("="));
    y=ARRcookies[i].substr(ARRcookies[i].indexOf("=")+1);
    x=x.replace(/^\s+|\s+$/g,"");
    if (x=="slide")
    {
      return y;
    }
  }
}

我的处理程序:

<asp:TextBox ID="OverviewChartStartDateTextBox" runat="server"></asp:TextBox>
<ajaxToolkit:CalendarExtender ID="OverviewChartStartCal" 
  OnClientDateSelectionChanged="dateSelectionChanged" runat="server" 
  TargetControlID="OverviewChartStartDateTextBox">
</ajaxToolkit:CalendarExtender>

如您所见,当在 ajax 日历上更改所选日期时,我试图调用 dateSelectionChanged 方法。

4

2 回答 2

1

听起来Javascript文件没有被正确包含。作为测试,请在<script>标签中包含页面本身的功能:

<script>
    function dateSelectionChanged(sender, args) {
        selectedDate = sender.get_selectedDate();  
        document.getElementById('<%= PostBackButton.ClientID %>').click();
    }
</script>

测试日期更改事件,如果它有效,您就知道您的脚本文件没有正确包含。

如果它仍然不起作用,则脚本可能有错误。OnClientDateSelectionChanged日历扩展器的事件是否有参数?

也许 sender 是null,并且脚本在到达您的按钮单击事件之前出错。

于 2012-08-28T15:13:41.210 回答
0

仅供参考,如果您有 .net >= 3.5,您可以将控件 ClientIDMode 设置为静态并使用 document.getElementById("controlId"); 访问控件 这样你就不必使用 <% %> 标签


<asp:TextBox ID="tb_companyEmail" ClientIDMode="Static" runat="server" CssClass="input"
                                    type="email" />


document.getElementById("tb_companyEmail");
于 2012-08-28T16:38:40.780 回答