Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/265.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript asp.net中文本框出错的字符计数_Javascript_C#_Jquery_Asp.net - Fatal编程技术网

Javascript asp.net中文本框出错的字符计数

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.

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

函数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请查看文档以了解。这应该给你一个想法。我得到以下错误,看起来它无法访问其值