我一直收到错误0x800a1391 - JavaScript运行时错误:'txtMessage'未定义 我想要做的是计算文本框的字符
<script type="text/javascript">
function textCounter(field, countfield, maxlimit)
{
if (field.value.length > maxlimit)
field.value = field.value.substring(0, maxlimit);
else
countfield.value = maxlimit - field.value.length;
}
</script>
我拥有的文本框:
<asp:TextBox ID="txtMessage" TextMode="MultiLine" Width="200px" Rows="3" runat="server" onkeyup="textCounter(txtMessage, this.form.remLen, 160);" onkeydown="textCounter(txtMessage, this.form.remLen, 160);" />
在这里,我在指望:
<input readonly="readonly" type="text" name="remLen" size="3" maxlength="3" value="160" /> characters left
答案 0 :(得分:3)
您指的是服务器端控件。在我的情况下,服务器上指定的ID将与客户端上的ID不同。您可以通过多种方式纠正错误。最直接的是更改ClientIDMode。
<asp:TextBox ID="txtMessage" ClientIdMode="static" TextMode="MultiLine" Width="200px" Rows="3" runat="server" onkeyup="textCounter(txtMessage, this.form.remLen, 160);" onkeydown="textCounter(txtMessage, this.form.remLen, 160);" />
将模式更改为静态意味着它将使用您指定的ID。请注意,您现在负责确保ID在合成页面上是唯一的(主页面+内容页面+用户控件)。
处理JavaScript时,请始终使用浏览器检查来源。您在服务器上看到的内容可能与您在客户端上看到的内容不同。
答案 1 :(得分:0)
如果您在客户端使用脚本,请使用javascript访问控件。 请尝试以下:
<asp:TextBox ID="txtMessage" TextMode="MultiLine" runat="server" Width="200px" Rows="3" onkeyup="textCounter(this.value, 160);" onkeydown="textCounter(this.value, 160);" />
<input id='remLen' readonly="readonly" type="text" name="remLen" size="3" maxlength="3" value="160" /> characters left
更正你的剧本:
<script type="text/javascript">
function textCounter(value, maxlimit)
{
if (value.length > maxlimit)
value = value.substring(0, maxlimit);
else
var countfield = document.getElementById('remLen');
countfield.value = maxlimit - field.value.length;
}
</script>