我遇到了以前工作的代码问题,但现在无法运行。我在文本框上有一个字符计数器,下面的代码在.aspx文件中:
<script>
var bName = navigator.appName;
function taLimit(taObj, maxL) {
if (taObj.value.length == maxL) return false;
return true;
}
function taCount(taObj, Cnt, maxL) {
objCnt = createObject(Cnt);
objVal = taObj.value;
if (objVal.length > maxL) objVal = objVal.substring(0, maxL);
if (objCnt) {
if (bName == "Netscape") {
objCnt.textContent = maxL - objVal.length;
}
else { objCnt.innerText = maxL - objVal.length; }
}
return true;
}
function createObject(objId) {
if (document.getElementById) return document.getElementById(objId);
else if (document.layers) return eval("document." + objId);
else if (document.all) return eval("document.all." + objId);
else return eval("document." + objId);
}
</script>
ASPX:
<asp:TextBox ID="txtDescription" runat="server" Font-Names="Courier New"
TextMode="MultiLine" Width="398px" onKeyPress="return taLimit(this, 50)" onKeyUp="return taCount(this,'myCounter1', 50)"></asp:TextBox>
<br /><B><SPAN id='myCounter1'>50</SPAN></B>
之前没有遇到任何问题,但现在我想要一种方法来更新myCounter1 On页面加载,以显示正确的剩余字符,我将文本从数据库加载到文本框中。
现在我正在使用它:
ScriptManager.RegisterStartupScript(this, this.GetType(), "myscript", "document.getElementById('myCounter1').textContent = 50 - " + txtDescription.Text.Length.ToString() + ";", true);
这样可行,它将字符计数器设置为正确的剩余字符。现在问题是,当文本框中输入文本时,caracter计数器将不再动态更新。有人可以告诉我为什么吗?
答案 0 :(得分:0)
使用js。把它放在你的脚本中:
<script type="text/javascript">
window.onload = function(){
taCount(document.getElementById('<%=txtDescription.ClientID%>'),'myCounter1', 50);
}
</script>
删除服务器端scriptmanager代码。