我的问题是我想在TextBox属性上调用js函数" OnTextChanged",js函数应该检查TextBox中的文本是否正确并设置Button的可见性。
这是我的asp代码:
...
<head runat="server">
...
<script type="text/javascript" src="<%# Page.ResolveClientUrl("Verify.js") %>"></script>
</head>
<body>
<form id="form1" runat="server">
<asp:TextBox ID="FirstTextBox" ClientIDMode="Static" runat="server" ></asp:TextBox>
<asp:Button ID="AddButton" runat="server" Text="Add person" Height="23px" OnClick="AddButton_Click"/>
...
</form>
</body>
js(在另一个文件中):
function Valid()
{
var textBox = '<%= FirstTextBox.ClientID %>';
var acceptButton = '<%= AddButton.ClientID %>';
var text= document.getElementById(textBox).value;
var accept = document.getElementById(acceptButton);
if(data correct)
{
do things..
}
else
{
accept.style.display = 'none';
}
}
并在c#代码中为TextBox设置属性。
ClientScriptManager cs = Page.ClientScript;
cs.RegisterClientScriptInclude("Verify", "Verify.js");
this.FirstTextBox.Attributes.Add("OnTextChanged", "Valid()");
JS函数不执行,看起来程序甚至没有进入js函数。任何人都知道我做错了什么?谢谢你的帮助!
答案 0 :(得分:3)
我认为这里有两个问题:
OnTextChanged
这应该更新为onchange
或onkeypress
,具体取决于您要查找的响应速度。鉴于您当前的设置,我认为最简单的方法是按如下方式更新您的代码:
JS:
function Valid(textboxId, btnId){
var textBox = textboxId;
var acceptButton = btnId;
var text= document.getElementById(textBox).value;
var accept = document.getElementById(acceptButton);
if(data correct)
{
do things..
}
else
{
accept.style.display = 'none';
}
}
C#:
ClientScriptManager cs = Page.ClientScript;
cs.RegisterClientScriptInclude("Verify", "Verify.js");
this.FirstTextBox.Attributes.Add("onchange", string.Format("Valid('{0}', '{1}')",FirstTextBox.ClientID, AddButton.ClientID));
希望有所帮助。
答案 1 :(得分:1)
您应该使用onchange而不是OnTextChanged这是服务器端事件。