Счетчик символов, работающий в Chrome, но не в Firefox

#javascript #asp.net #vb.net

#javascript #asp.net #vb.net

Вопрос:

Я реализовал функцию счетчика символов, которая работает в Chrome, но не работает в Firefox. У меня это на моем VB.NET страница. Можете ли вы помочь мне понять, почему он работает в Chrome, но не в Firefox?

  <br>Other comments (max 250 characters):
<br>
<asp:TextBox ID="OtherComments" runat="server" MaxLength="250" 
    onblur="javascript:CharCounter(this.id);" 
    onkeyup="javascript:CharCounter(this.id);" style="height:50px; width:450px;" 
    TextMode="MultiLine"></asp:TextBox>
<br>
    <asp:Label ID="lblCounter" runat="server" Text="250 chars remaining"></asp:Label>
    <script language="javascript" type="text/javascript">

    function CharCounter(textId) {
        var totalchar = '<%= OtherComments.MaxLength %>';
        var txtbox = document.getElementById(textId);
        var lbl = document.getElementById('<% =lblCounter.ClientID %>');
        if (txtbox.value.length > totalchar) {
            txtbox.value = txtbox.value.substring(0, totalchar);
        }
        lbl.innerText = (totalchar - txtbox.value.length)   " chars remaining";
    }
 </script>
 

Комментарии:

1. .innerText является нестандартным. Используйте .textContent вместо этого. Если вам нужно поддерживать IE8, вы можете исправить его в HTMLElement.prototype

2. или innerHTML — работает везде

Ответ №1:

Вы сравниваете строку с целым числом. Это может быть проблемой. Также лучше использовать innerHTML вместо innerText. Внутренний текст не поддерживается в некоторых браузерах. Надеюсь, это решит вашу проблему.

 function CharCounter(textId) {
        var totalchar = <%= OtherComments.MaxLength %>;
        var txtbox = document.getElementById(textId);
        var lbl = document.getElementById('<% =lblCounter.ClientID %>');
        if (txtbox.value.length > totalchar) {
            txtbox.value = txtbox.value.substring(0, totalchar);
        }
        lbl.innerHTML = (totalchar - txtbox.value.length)   " chars remaining";
}