我想根据下拉列表中选择的值更改文本框的可见性。
我创建了这样的函数:
function ShowGiftCardSource() {
var ddlGiftCardSource = document.getElementById('<%=ddlGiftCardSource.ClientID%>');
var txtGiftCardSource = document.getElementById('<%=txtGiftCardSource.ClientID%>');
if (ddlGiftCardSource.value == "Other") {
txtGiftCardSource.style.visibility = "visible";
txtGiftCardSource.focus();
}
}
在CS页面中:
ddlGiftCardSource.Attributes.Add("onChange", "OnSelectedIndexChanged();");
并在控件中:
<asp:DropDownList ID="ddlGiftCardSource" runat="server" Width="151px" onChange="ShowGiftCardSource();">
但我收到以下错误:
Microsoft JScript runtime error: Object expected
有人可以帮我解决一下吗?
答案 0 :(得分:1)
也许那是因为你在onChange处理程序中使用了ShowGiftCardOccasion()方法,但你的方法名是ShowGiftCardSource()?然后javascript就找不到正确名称的方法。
答案 1 :(得分:1)
将后面的代码更改为:
ddlGiftCardSource.Attributes.Add("onChange", "ShowGiftCardSource();");
从标记中删除onchange
:
<asp:DropDownList ID="ddlGiftCardOccasion" runat="server" Width="151px">
标记中的onchange
是要调用的服务器端方法。
编辑:如果你已经有服务器端方法,你必须首先将AutoPostBack添加到下拉菜单然后在服务器端onchange事件显示文本框:
<asp:DropDownList ID="ddlGiftCardOccasion" runat="server" Width="151px" OnChange="ShowGiftCardSource" AutoPostBack="True">
在你的C#代码后面:
void ShowGiftCardSource(object sender, EventArgs e) {
//code.....
txtGiftCardSource.Visible = true;
}
当然,摆脱ddlGiftCardSource.Attributes.Add
行。