2012-12-05 29 views
0

我遇到了用於工作的代碼問題,但現在無法運行。我有一個在.aspx文件下面的代碼在一個文本框字符計數器:registerstartupscript阻止javascript字符計數器

<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); 

這個工作,它設置字符計數器,以正確的剩餘字符。然而,現在的問題是,當在文本框中鍵入文本時,caracter計數器不會再動態更新。有人能告訴我爲什麼嗎?

+0

你想使用jQUery嗎?讓生活更輕鬆 –

+0

我對jquery的知識現在真的是不靈敏的,我必須儘快解決這個問題。 – Luckl507

+0

我可以給你一個jQUery解決方案 –

回答

0

使用js。將其放入腳本中:

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

刪除服務器端scriptmanager代碼。

+0

非常感謝,這解決了我的問題!不能相信我沒有想到這一點。 – Luckl507