Javascript变量问题

时间:2011-09-12 15:57:13

标签: javascript asp.net

我在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('&lt;%=btnSearch.ClientID %>');"

我注意到'&amp; LT;”而不是“&lt;”。这是我问题的原因吗?为什么会这样?或许还有另一个原因?

非常感谢。

2 个答案:

答案 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中添加一个参数。