Как отобразить оставшиеся символы текстового поля в метке в C#?

Я не уверен, что у меня есть последний бит, верно? Я изменил максимальную длину текстового поля на 140. Я не могу использовать TextLength, Помогите, пожалуйста?! У меня есть это до сих пор:

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

2 ответа

Решение

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
    }

Если вы используете ASP.NET в C#. Не ограничивайте себя в использовании JavaScript, как в этой ссылке

Я думаю, что это будет лучший ответ...

Код заголовка:

<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 Текстовое окно.

Теперь для MultiLineTextBox Вы должны добавить это на свой Page_Load() Итак maxLength принимает TextBox1.MaxLength значение.:

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

Так же MaxLength собственность TextBox не работает когда включен Multiline режим, поэтому вам нужно добавить на свой JavaScript getCountDown() функционируют следующие строки:

// 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 значение.

Pablo

Другие вопросы по тегам