2013-05-27 20 views
0

後,我有這個JavaScript從一個textarea這是下面的代碼計數字符:JavaScript的字符計數器復位到0回傳

$(document).ready(function() { 
     $('#count').click(counter); 
     $('#txtComment').change(counter); 
     $('#txtComment').keydown(counter); 
     $('#txtComment').keypress(counter); 
     $('#txtComment').keyup(counter); 
     $('#txtComment').blur(counter); 
     $('#txtComment').focus(counter); 
     $('#txtComment').focusin(counter); 
     $('#txtComment').focusout(counter); 
     $('#txtComment').mousedown(counter); 
     $('#txtComment').mouseenter(counter); 
     $('#txtComment').show(counter); 
     $('#txtComment').load(counter); 
     $('#txtComment').submit(counter); 
     $('#btnSubmit').click(counter); 
    }); 

    counter = function() { 
     var value = $('#txtComment').val(); 

     if (value.length == 0) { 
      $('#wordCount').html(0); 
      $('#totalChars').html(0); 
      $('#charCount').html(0); // I only use this one. 
      $('#charCountNoSpace').html(0); 
      return; 
     } 

     var regex = /\s+/gi; 
     var wordCount = value.trim().replace(regex, ' ').split(' ').length; 
     var totalChars = value.length; 
     var charCount = value.trim().length; // I only use this one. 
     var charCountNoSpace = value.replace(regex, '').length; 

     $('#wordCount').html(wordCount); 
     $('#totalChars').html(totalChars); 
     $('#charCount').html(charCount); // I only use this one. 
     $('#charCountNoSpace').html(charCountNoSpace); 
    }; 

而且我在顯示器中跨度的計數器:

<span id="totalChars">0</span> characters 

當頁面不是回發時,計數似乎工作正常。在頁面上,我有一個提交按鈕,它是一個在服務器上運行的ASP.NET控件。說到點擊按鈕的場景,頁面在提交數據後進行回發,它將顯示相同的頁面,保留textarea的內容,但是,即使有數據,計數也會回到零值在文本區域。正如你所看到的,我已經把形式應該做的幾乎所有可能的事件都放在了上面。

我需要計算字符並在PostBack之後顯示它。

+2

您需要調用$(document).ready的計數器函數.ready –

+0

打敗我吧@AbrahamUribe –

回答

0

您可以將span標籤更改爲在服務器上運行,因此ViewState將在回發後持續存儲該值。

<span id="totalChars" runat="server">0</span> characters 
0

counter功能不點火,直到textarea與互動。綁定所有事件後,請在$(document).ready函數中手動調用counter函數(IE counter();),並且代碼將在頁面加載時運行。

你可能會認爲load事件會爲你做這個,但load只能與具有與其關聯(如圖片和腳本,see the documentation獲取更多信息)的URL元素的作品。

+0

您確定'ready'在ASP .NET PostBack? –

+0

如果它是一個傳統的回傳是的,因爲PostBack只是一個HTTP「POST」,而WebForms框架爲你做了額外的魔術。但是,部分PostBack(使用'UpdatePanel'控件)使用AJAX來更新頁面。在這種情況下,'ready'函數只會觸發一次。 –

+0

對不起,我犯了一個錯誤。我把它放在ScriptManager的AsyncPostBack中,因爲我只是在另一個問題中回答這個問題。 –

0

您可以使用jQuery Cookies Plug-in堅持,如:

保存:jQuery.cookie("cookie_counter", totalChars);

獲得:var totalChars = jQuery.cookie("cookie_counter");

0
  1. 提交按鈕 「的OnClientClick」 事件中,你可以調用javascript函數。
  2. 將字符數保存在會話中。
  3. 在頁面加載完成後,將存儲在會話中的值完全分配給範圍
  4. 您應該在之前創建一個會話變量才能使用它。

例如,函數setVar(){alert(「Testing」); <%Session(「TempVar」)=「setVar Test」%>}