Asp.net计算正在文本框中写入的字符数

时间:2009-08-25 16:24:51

标签: asp.net textbox

我希望能够在用户当前正在写入的文本框中以asp标签显示当前的字符数。 我在网上看过部分文章,但都没有。

我尝试过使用

<asp:TextBox ID="txtInput" runat="server" TextMode="MultiLine" onkeyup="Count(this.id)"></asp:TextBox>

<script type="text/javascript">
        function Count(x) {
           document.getElementById(lbNrChar).value = document.getElementById(x).value.length;
        }
</script>

但没有任何成功..

3 个答案:

答案 0 :(得分:3)

我们使用Javascript来解决这个问题:

的document.getElementById(值).value.length ...

请注意,如果控件是标签,那么您必须使用.innerHTML而不是.value属性来获取长度。

    document.getElementById("Label1").innerHTML = 
document.getElementById("TextBox1").value.length; 

VS。如果它是另一个文本框,你将使用.value。

在服务器端,您可以通过textbox.text.length

获取它

答案 1 :(得分:2)

您需要使用浏览器中托管的客户端脚本语言 - 基本上您必须使用JavaScript。

This question很好地回答了你想要做的幕后故事。您需要处理要跟踪的文本框和文本区域的onKeyPress客户端事件,并将标签,脚本和文本控件放在ASP.NET UserControl中并不是一个糟糕的方法。

编辑:由于链接的问题不再深入,你需要jQuery(当你开始使用时,你会发现有多么有趣的网页UI编程)我怀疑this article将帮助您了解如何让球滚动。

答案 2 :(得分:0)

我没有对此进行测试,但希望它有所帮助。如果您在UserControl中执行此操作,如果您在页面上多次使用相同的用户控件,则必须稍微更改一下。 (基本上你必须从代码隐藏中注册javascript。)

在您的代码后面(Init或Load或类似的地方):

txtInput.Attributes["onkeydown"] = String.Format("count('{0}')", txtInput.ClientID);

ASPX

<asp:TextBox id="txtInput" runat="server" TextMode="MultiLine"/>
Count: <span id="spanDisplay"></span>

<script type="text/javascript">
  function count(clientId) {
    var txtInput = document.getElementById(clientId);
    var spanDisplay = document.getElementById('spanDisplay');
    spanDisplay.innerHTML = txtInput.value.length;
  }
</script>