Javascript asp.net中文本框出错的字符计数
我一直收到错误0x800a1391-JavaScript运行时错误:“txtMessage”未定义 我想做的是计算文本框的字符数Javascript asp.net中文本框出错的字符计数,javascript,c#,jquery,asp.net,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.
<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>
函数textCounter(字段、countfield、maxlimit)
{
如果(field.value.length>maxlimit)
field.value=field.value.substring(0,maxlimit);
其他的
countfield.value=maxlimit-field.value.length;
}
我拥有的文本框:
<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
左字符
您指的是服务器端控件。在我的情况下,服务器上指定的ID将与客户端上的ID不同。你可以用多种方法来纠正这一点。最直接的方法是更改clientmode
<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时,请始终使用浏览器检查源代码。您在服务器上看到的内容可能与在客户端上看到的内容不同。您指的是服务器端控件。在我的情况下,服务器上指定的ID将与客户端上的ID不同。你可以用多种方法来纠正这一点。最直接的方法是更改clientmode
<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时,请始终使用浏览器检查源代码。您在服务器上看到的内容可能与在客户端上看到的内容不同。如果您在客户端使用脚本,请使用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>
函数textCounter(值,最大限制)
{
如果(value.length>maxlimit)
value=value.substring(0,maxlimit);
其他的
var countfield=document.getElementById('remLen');
countfield.value=maxlimit-field.value.length;
}
如果在客户端使用脚本,请使用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>
函数textCounter(值,最大限制)
{
如果(value.length>maxlimit)
value=value.substring(0,maxlimit);
其他的
var countfield=document.getElementById('remLen');
countfield.value=maxlimit-field.value.length;
}
你能用谷歌浏览器运行你的代码吗?所以,检查Chrome控制台中的错误。Chrome中没有错误,但不计算。你能用Google Chrome运行你的代码吗?因此,请检查Chrome控制台中的错误。Chrome中没有错误,但不算数。我不是ASP开发人员,所以我只是想知道这与删除runat=“server”
相同吗?或者这是一个完全离题的问题?!:)@A.Wolff如果删除runat=“server”
,它将不再是服务器端控件,它将不会被处理,文字标记
将被发送到客户端,客户端将不知道如何处理它。如果需要服务器端功能,请使用TextBox控件。如果您不需要服务器端功能,请使用纯HTML(
)。如何将替换为?@JuniorJohn请查看文档以了解。这应该给你一个想法。我得到了以下错误,看起来它无法访问其值我不是ASP开发人员,所以我只是想知道它是否与删除runat=“server”
相同?或者这是一个完全离题的问题?!:)@A.Wolff如果删除runat=“server”
,它将不再是服务器端控件,它将不会被处理,文字标记
将被发送到客户端,客户端将不知道如何处理它。如果需要服务器端功能,请使用TextBox控件。如果您不需要服务器端功能,请使用纯HTML(
)。如何将替换为?@JuniorJohn请查看文档以了解。这应该给你一个想法。我得到以下错误,看起来它无法访问其值