PostBack后JavaScript字符计数器重置为0

时间:2013-05-27 17:43:24

标签: javascript jquery asp.net

我有这个JavaScript来计算textarea中的字符,这是下面的代码:

$(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

当页面不是PostBack时,计数似乎正常。在页面上,我有一个提交按钮,它是一个在服务器上运行的ASP.NET控件。在单击按钮的场景中,页面正在进行PostBack,在提交数据后,它将显示相同的页面,保留textarea的内容,但是,即使存在,计数也会设置为零textarea上的value / s。正如你所看到的,我已经把表格应该做的几乎所有可能的事件都放了。

我需要计算字符并在PostBack之后显示它。

4 个答案:

答案 0 :(得分:0)

您可以更改span标记以在服务器上运行,因此ViewState将在回发后保留该值。

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

答案 1 :(得分:0)

counter功能在textarea与之互动之前不会触发。绑定所有事件后,在counter函数中手动调用counter();函数(IE $(document).ready),代码将在页面加载时运行。

您可能认为load事件会为您执行此操作,但load仅适用于具有与其关联的URL的元素(如图像和脚本,see the documentation以获取更多信息)。

答案 2 :(得分:0)

您可以使用jQuery Cookies Plug-in来保留,例如:

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

获取:var totalChars = jQuery.cookie("cookie_counter");

答案 3 :(得分:0)

  1. 在提交按钮“ OnClientClick ”上,您可以调用 javascript函数。
  2. 将字符数保存在会话
  3. 页面加载后,将会话中存储的值完全分配给范围
  4. 你应该在之前创建一个会话变量,只是为了使用它。
  5. 例如。 function setVar(){alert(“Testing”); &lt;%Session(“TempVar”)=“setVar Test”%&gt; }