我不确定我是否以最佳方式提出问题所以我将展示我的代码示例。
我有多个页面使用相同的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方法。
答案 0 :(得分:1)
听起来Javascript
文件没有被正确包含。作为测试,请在<script>
标记中包含页面内部的功能:
<script>
function dateSelectionChanged(sender, args) {
selectedDate = sender.get_selectedDate();
document.getElementById('<%= PostBackButton.ClientID %>').click();
}
</script>
测试更改日期的事件,如果有效,则表示您的脚本文件未正确包含。
如果仍然无效,脚本可能会出错。日历扩展程序的OnClientDateSelectionChanged
事件是否有参数?
也许发件人是null
,并且脚本在进入按钮点击事件之前就出错了。
答案 1 :(得分:0)
如果你有.net&gt; = 3.5,你可以将你的控件ClientIDMode设置为静态,并使用document.getElementById(“controlId”)访问控件;这样您就不必使用&lt; %%&gt;标签
<asp:TextBox ID="tb_companyEmail" ClientIDMode="Static" runat="server" CssClass="input"
type="email" />
document.getElementById("tb_companyEmail");