2

我不确定我是否有最后一点?我将文本框的最大长度更改为 140。我似乎无法使用TextLength. 请帮忙?!到目前为止我有这个:

protected void textBox_TextChanged(object sender, EventArgs e)
{
    characterCountLabel.Text = textBox.MaxLength - textBox.TextLength;
}
4

2 回答 2

5

characterCountLabel.Text是字符串格式。因此,您可能希望在设置其值之前对其进行转换,如下所示:

protected void textBox_TextChanged(object sender, EventArgs e)
{
    characterCountLabel.Text = (textBox.MaxLength - textBox.Text.Length).ToString();
}

我认为您正在尝试显示用户可以输入到您的文本框中的剩余字符?我建议您可以像这样将限制设置为常量:

protected void textBox_TextChanged(object sender, EventArgs e)
    {
        characterCountLabel.Text = (140 - textBox.Text.Length).ToString(); // in here 140 is your limit
    }

如果您在 C# 中使用 ASP.NET。不要像这个链接那样限制自己使用 javascript

于 2013-06-04T00:49:17.743 回答
3

我认为这将是一个更好的答案...

标头代码:

<script language="javascript" type="text/javascript">
    function getCountDown() 
    {
        //Get the Textbox control
        var textField = document.getElementById("<%#TextBox1.ClientID %>");
        //Do the math of chars left and pass the value to the label
        document.getElementById('<%#Label1.ClientID %>').innerHTML = textField.maxLength - textField.value.length;
        return false;
    }        
</script>

ASP 代码:

<asp:TextBox ID="TextBox1" runat="server" MaxLength="729" Height="80px" 
                Width="591px" onkeyup="getCountDown();" ClientIDMode="Static"></asp:TextBox>

<asp:Label ID="Label1" runat="server" Text="" ClientIDMode="Static"></asp:Label>

TextBox设置和Label控件的属性很重要,ClientIDMode="Static"否则将无法在 javascript 上找到控件名称。

CS代码:

protected void Page_Load(object sender, EventArgs e)
{
    Page.Header.DataBind();
}

这就是一个SingleLine文本框。

现在,MultiLine TextBox您需要将其添加到您的Page_Load(),以便maxLength获取TextBox1.MaxLength值。:

this.TextBox1.Attributes.Add("maxLength", TextBox1.MaxLength.ToString());

此外,该MaxLength属性在TextBox处于模式时不起作用,Multiline因此您需要在您的 javascriptgetCountDown()函数中添加以下行:

// Check if user is entering more than the limit of characters
if (textField.value.length >= textField.maxLength) {
    // Cut extra text
    document.getElementById("<%#TextBox1.ClientID %>").innerHTML = textField.value.substring(0, textField.maxLength);
}

将它们添加到该var textField = document.getElementById("<%#TextBox1.ClientID %>");行之后。这是为了防止用户输入的字符多于MaxLength值。

巴勃罗

于 2014-11-28T19:52:33.420 回答