计算在asp.net中出错的文本框字符

时间:2015-12-01 14:55:21

标签: javascript c# jquery asp.net

我一直收到错误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

2 个答案:

答案 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>