【问题标题】:JQuery character counter with multiple inputs具有多个输入的 JQuery 字符计数器
【发布时间】:2012-05-21 08:27:12
【问题描述】:

我在下面找到了简单文本框字符计数器(如 Twitter)的解决方案。

我一直在尝试修改代码以适应多个文本输入,而不是使用单个文本框。

原因是我想在将 URL 和文本作为同一条推文发送之前验证它们。

谁能指出我正确的方向?

<span class="counter"></span>
<input type="text" name="field1" id="field1" class="word_count" />
<input type="text" name="field2" id="field2" class="word_count" />

js:

$(document).ready(function () {
    $('.word_count').each(function () {
        var $this = $(this);
        var counter = $this.parent().find('.counter');
        var maxlength = $this.attr('maxlength');

        counter.text('Only ' + maxlength + ' characters allowed');

        $this.bind('input keyup keydown', function () {
            var value = $this.val();

            if (value.length > 0) {
                counter.text((maxlength - $this.val().length) + ' characters left');
            } else {
                counter.text('Only ' + maxlength + ' characters allowed');
            }
        });
    });
});

【问题讨论】:

    标签: jquery count char


    【解决方案1】:

    首先是小提琴。 http://jsfiddle.net/bczengel/tsbfU/

    这是问题。

    1. 代码正在寻找输入字段上不存在的 maxLength 属性。因此是 NaN 消息。
    2. 如果您使用最新版本的 jQuery,您应该使用 .on() 方法。它比绑定有一些其他功能,但基本上是较新的方法。
    3. 您不需要遍历所有输入。 jQuery 会将您的事件绑定到它在结果集中找到的所有元素。基本上,当您只需要一个输入时,您会为每个输入创建一个新函数。
    4. 我将焦点添加到事件列表中,以便在您输入输入时更新计数器。您可能需要添加一个单独的模糊事件处理程序来在没有输入焦点时隐藏计数器。

    【讨论】:

    • 谢谢布赖恩 - 这太棒了。虽然我希望有一个计数器来汇总所有文本输入的字符。例如,我在两个输入中都使用了 140 个字符。
    • 完美。非常感谢。 :)
    • 好的,所以... 我尝试将 Brian 的解决方案与设置默认输入文本值的代码集成。小提琴:jsfiddle.net/nBYLP/56 我需要弄清楚如何让字符计数忽略输入值,如果它们设置为默认值(如您所见,它的行为并不完全正常)。可能使这更简单的是,如果只有一个文本框被聚焦时清除所有文本框,然后当所有文本框都不包含值时重新填充所有文本框。这可以在不主要修改现有代码的情况下实现吗?
    • 令人惊讶的是,我想我自己已经设法解决了这个问题。 :) (小提琴:jsfiddle.net/nBYLP/66)只需创建变量 $content = $('.content');并关注/模糊 $content 而不是 $element。这真的是所需要的吗?好像太容易了……
    • 我是对的。这太容易了。 :( 除了 blur 事件外,它应该正常工作。如果其中一个字段包含输入值,则另一个字段在 blur 时应保持为空。但现在,它恢复为默认值。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-29
    • 1970-01-01
    • 2016-09-23
    • 1970-01-01
    相关资源
    最近更新 更多