我在javascript中有一个变量:
var activeSearchButton = document.getElementById('<%=btnSearch.ClientID %>');
我想这样设置:
<asp:TextBox ID="WFTo" runat="server" onchange="activeSearchButton = document.getElementById('<%=btnWFSearch.ClientID %>');"></asp:TextBox>
当我尝试在javascript函数中使用varible时,它为null。消息来源显示:
onchange="activeSearchButton = document.getElementById('<%=btnSearch.ClientID %>');"
我注意到'&amp; LT;”而不是“&lt;”。这是我问题的原因吗?为什么会这样?或许还有另一个原因?
非常感谢。
答案 0 :(得分:4)
只需在<script />
部分
function setActiveSearchButton()
{
activeSearchButton = document.getElementById('<%=btnSearch.ClientID %>');
}
并使用
<asp:TextBox ID="WFTo" runat="server" onchange="setActiveSearchButton()"></asp:TextBox>
编辑:
事实证明,您不能将<%= .. %>
用于服务器端控件。您必须决定使用像这样的常规html输入
<input type="text" onchange="setActiveSearchButton('<%= btnSearch.ClientID %>')" />
和
function setActiveSearchButton(buttonId)
{
activeSearchButton = document.getElementById(buttonId);
}
或保留<asp:TextBox />
原样并在Page_Load上
protected void Page_Load(object sender, EventArgs e)
{
WFTo.Attributes.Add("onchange", "setActiveSearchButton('" + btnSearch.ClientID +"')");
}
答案 1 :(得分:0)
你可以这样做:
onchange='<% = string.Format("activeSearchButton = document.getElementById(\"{0}\");", btnWFSearch.ClientID) %>'
编辑:正如我们的朋友所说,我们只能在“输入”控件中执行此操作。对于TextBox,最好的方法是在codebehind中添加一个参数。