2017-06-27 68 views
0

我想製作一個動態字符計數器,顯示文本框中的text.length。我試圖使用textchanged,但我認爲我錯過了一塊,因爲我的標籤根本不顯示任何值。動態字符計數器 - 標籤不顯示任何東西

ASP

<tr> 
    <td style="vertical-align: middle"> 
     Note to Buyer: 
    </td> 
    <td> 
     <asp:TextBox ID="txtNoteToBuyer" runat="server" Height="150px" MaxLength="425" TextMode="MultiLine" Width="400px"></asp:TextBox> 
    </td> 
    <td>  
     <asp:Label ID="lblCharacterCount" runat="server"></asp:Label> 
    </td> 
</tr> 

VB

Protected Sub txtNoteToBuyer_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles txtNoteToBuyer.TextChanged 
    lblCharacterCount.Text = Len(txtNoteToBuyer.Text) 
End Sub 
+2

不要做這個服務器端。改用JavaScript。否則,您必須在輸入的每個字符後重新輸入頁面。 – Santi

+0

好的電話。謝謝! – Cole

回答

4

賠率是你的活動不點火。您需要將文本框的AutoPostBack屬性設置爲true。

<asp:TextBox ID="txtNoteToBuyer" runat="server" Height="150px" MaxLength="425" TextMode="MultiLine" 
         Width="400px" AutoPostBack="True"></asp:TextBox> 

但是,這可能會導致響應緩慢。我建議使用JavaScript來動態更新前端的計數,而不是要求回發。

要做到這一點,您需要將OnKeyUp="updateCount();"添加到您的文本框中,然後添加一個腳本來將計數更新到您的頁面。下面是一個可以工作的腳本示例:

<script type="text/javascript"> 
    function updateCount() { 
     var countLabel = document.getElementById("<%=lblCharacterCount.ClientId%>"); 
     var textCount = document.getElementById("<%=txtNoteToBuyer.ClientId%>").value.length; 
     countLabel.textContent = textCount + ""; 
    } 
</script> 
+0

我感謝您的回覆!我嘗試了這兩種方法,但是當我運行它時,我的標籤仍然顯示爲空白。 對於JavaScript部分,我將腳本放在aspx頁面中我的文本框和標籤是? – Cole

+0

您可以將腳本添加到單獨的文件並加載到您的頁面上,但爲了簡單起見,是的,它需要在您的文本框和標籤所在的aspx頁面上。確保它可行的最簡單方法是將其放入標籤中。 – Wenadin

+0

我在頂部使用了所有其他腳本,但我的標籤仍顯示爲空白。事實上它不能與AutoPostBack一起工作,這讓我覺得我仍然在某處丟失了一塊。 – Cole