0

以前は機能していたコードに問題がありますが、現在は実行に失敗しています。テキストボックスに文字カウンターがあり、.aspxファイルに次のコードが含まれています。

<script>
    var bName = navigator.appName;
    function taLimit(taObj, maxL) {
        if (taObj.value.length == maxL) return false;
        return true;
    }

    function taCount(taObj, Cnt, maxL) {
        objCnt = createObject(Cnt);
        objVal = taObj.value;
        if (objVal.length > maxL) objVal = objVal.substring(0, maxL);
        if (objCnt) {
            if (bName == "Netscape") {
                objCnt.textContent = maxL - objVal.length;
            }
            else { objCnt.innerText = maxL - objVal.length; }
        }
        return true;
    }
    function createObject(objId) {
        if (document.getElementById) return document.getElementById(objId);
        else if (document.layers) return eval("document." + objId);
        else if (document.all) return eval("document.all." + objId);
        else return eval("document." + objId);
    }
                    </script>

aspx:

<asp:TextBox ID="txtDescription" runat="server" Font-Names="Courier New" 
TextMode="MultiLine" Width="398px" onKeyPress="return taLimit(this, 50)" onKeyUp="return taCount(this,'myCounter1', 50)"></asp:TextBox>
<br /><B><SPAN id='myCounter1'>50</SPAN></B> 

これは以前は問題なく機能しましたが、myCounter1を更新する方法が必要です。ページの読み込み時に、正しい残りの文字を表示するために、データベースからテキストボックスにテキストを読み込みます。

今私はこれを使用しています:

            ScriptManager.RegisterStartupScript(this, this.GetType(), "myscript", "document.getElementById('myCounter1').textContent = 50 - " + txtDescription.Text.Length.ToString() + ";", true);

これは機能し、文字カウンターを正しい残りの文字に設定します。ただし、テキストボックスにテキストを入力すると、文字カウンターが動的に更新されなくなるという問題があります。誰かが理由を教えてもらえますか?

4

1 に答える 1

0

jsを使用します。これをスクリプト内に配置します。

<script type="text/javascript">
window.onload = function(){
    taCount(document.getElementById('<%=txtDescription.ClientID%>'),'myCounter1', 50);
}
</script>

サーバー側のscriptmanagerコードを削除します。

于 2012-12-05T11:27:57.817 に答える