字符倒计时就像在推特上

arg*_*gon 41 twitter jquery

如何使用jQuery在Twitter上制作"剩余角色"倒计时?并且还将输入限制为textarea.

Bri*_*nna 84

创建一个spantextarea给它们唯一的选择器(使用ID或类),如下所示:

<textarea class="message" rows="2" cols="30"></textarea>
<span class="countdown"></span>
Run Code Online (Sandbox Code Playgroud)

然后创建一个更新函数:

function updateCountdown() {
    // 140 is the max message length
    var remaining = 140 - jQuery('.message').val().length;
    jQuery('.countdown').text(remaining + ' characters remaining.');
}
Run Code Online (Sandbox Code Playgroud)

并在加载页面和更改消息时运行该函数:

jQuery(document).ready(function($) {
    updateCountdown();
    $('.message').change(updateCountdown);
    $('.message').keyup(updateCountdown);
});
Run Code Online (Sandbox Code Playgroud)

访问示例查看源代码.jQuery使这样的事情变得非常简单.

  • `.live()`现在已被弃用,使用`.on()`来附加事件处理程序:`$('.message').on('input',function(){...})` (9认同)
  • 使用$('.message').live('input',updateCountdown)比使用这两种方法更好.在您在框外单击或其他事件触发之前,更改事件不会触发该功能.live on input将捕获文本字段上的任何事件. (8认同)
  • +1,jsbin的良好用法.如果所有的例子都使用它会很好. (2认同)

Rya*_*ary 17

我已经成功使用了Aaron Russell 简单可数的jQuery插件 ; 但是,如果我要编写它,我会设计它有点不同(自动计数器div创建,使用data-maxlength属性而不是插件选项等).

用法简单:

$('#my_textarea').simplyCountable();
Run Code Online (Sandbox Code Playgroud)

高级用法:

$('#my_textarea').simplyCountable({
    counter: '#counter',
    countable: 'characters',
    maxCount: 140,
    strictMax: false,
    countDirection: 'down',
    safeClass: 'safe',
    overClass: 'over',
    thousandSeparator: ','
});
Run Code Online (Sandbox Code Playgroud)

  • 在jQuery中,一切都应该被设计为一个插件,即使它是一个"微插件"(http://www.thegarvin.com/2009/10/28/clearer-code-with-jquery-micro-plugins.html ). (11认同)
  • 我认为插件对它来说太过分了. (3认同)

Nik*_*nov 8

使用jQuery,Mootools或类似的东西进行如此简单的任务是自杀......除非你已经将它们用于其他东西.

简单的javascript功能:

function limitTextCount(limitField_id, limitCount_id, limitNum)
{
    var limitField = document.getElementById(limitField_id);
    var limitCount = document.getElementById(limitCount_id);
    var fieldLEN = limitField.value.length;

    if (fieldLEN > limitNum)
    {
        limitField.value = limitField.value.substring(0, limitNum);
    }
    else
    {
        limitCount.innerHTML = (limitNum - fieldLEN) + ' charachter(s) to go.';
    }
}
Run Code Online (Sandbox Code Playgroud)

第一个参数是输入/ textarea的id.第二个 - 显示字符的div的id.第三是限制本身.

简单的HTML:

<input type="text" value="" name="title" id="title" maxlength="100" onkeyup="limitTextCount('title', 'divcount', 100);" onkeydown="limitTextCount('title', 'divcount', 100);">
<br>
<div id="divcount">100 charachter(s) to go..</div>
Run Code Online (Sandbox Code Playgroud)

  • 如果你已经在同一页面上以其他方式使用jQuery,那会自杀吗?我假设你只是说当你不需要它时加载它是很糟糕的. (2认同)