0

我有这个 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的内容,但是,即使有文本区域上的值/秒。正如你所看到的,我已经放置了表单应该执行的几乎所有可能的事件。

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

4

4 回答 4

0

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

<span id="totalChars" runat="server">0</span> characters
于 2013-05-27T17:47:28.217 回答
0

你可以使用jQuery Cookies Plug-in来持久化,比如:

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

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

于 2013-05-27T17:53:31.133 回答
0

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

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

于 2013-05-27T17:49:48.807 回答
0
  1. 在提交按钮“ OnClientClick ”事件上你可以调用一个javascript函数。
  2. 保存会话中的字符数。
  3. 页面加载完成后,将session中存储的值分配给span
  4. 您应该在使用之前创建一个会话变量

例如。function setVar(){ alert("Testing"); <% Session("TempVar") = "setVar 测试" %> }

于 2013-05-29T11:35:13.223 回答