2011-06-29 24 views
3

我正在jQuery中用textarea/input計數器進行試驗。到目前爲止,我已經寫了這個:jQuery中類似Twitter的textarea /輸入計數器

$textarea.keyup(function(){ 
    $chars_remaining.html((200 - parseInt($textarea.val().length))); 
}); 
$textarea.keydown(function(){ 
    $chars_remaining.html((200 - parseInt($textarea.val().length))); 
}); 

但不知何故,如果我按超過3秒的關鍵,計數器樣的卡,它降低速度很慢。相比之下,無論您鍵入/保持按鍵的速度有多快,Twitter的計數器都不會遇到任何延遲。

我該如何調整我的代碼才能順利運行?

謝謝!

+3

正常工作:http://jsfiddle.net/s8hP9/你用什麼瀏覽器? – PeeHaa

+0

我使用的是Firefox 5,但打開了多個選項卡,這應該反映普通用戶的瀏覽環境。瀏覽器在這些情況下的響應非常緩慢,我認爲它不應該。還是我擔心得太多? – linkyndy

回答

4

,如果你想使用自己的代碼,試試這個。這是一個小插件。

(function($) { 
    $.fn.counted = function(options) { 
     var settings = { 
      count: 300 
     };  
     options = $.extend(settings, options || {}); 
     return this.each(function() {  
      var $this = $(this);  
      var counter = $('<div/>').html(options.count).insertAfter($(this));   
      $(this).keyup(function(e) { 
       var count = options.count - $this.val().length; 
       if (count >= 0) { 
        counter.html(count); 
       } else { 
        $this.val($this.val().substr(0, options.count)); 
        counter.html(0); 
       } 
      }); 
     }); 
    }; 
})(jQuery); 

$(function() { 
    $('textarea.counted').counted({count: 10}); 
}); 

搗鼓這是在這裏:http://jsfiddle.net/XScwS/

+0

謝謝,但我也想更新鍵盤上的計數器。如果我用這個事件更新你的代碼,它就像我的一樣(小滯後)。我開始相信這是正常的,我不應該擔心。 – linkyndy

1

發現這個而尋找解決自己(也發現了你的問題!!):

http://cssglobe.com/post/7161/jquery-plugin-simplest-twitterlike-dynamic-character-count-for-textareas

看起來很容易實現而且非常有效。

希望這會有所幫助。

+0

我剛剛實現了這個 - 所以,使用起來非常簡單,而且完全符合我的要求,而且我收集的內容也是如此。 –

+0

嗨,謝謝你的回答。不幸的是,我希望我的櫃檯在按住鍵的同時繼續減少。只有當您停止按下某個鍵時,您所說的插件纔會更新。無論如何,我使用上面的代碼,事實上,如果我從內存中釋放Firefox,它的效果很好。不管怎樣,謝謝你! – linkyndy

+0

該鏈接不再工作。你能找到原始來源嗎? –

1

像什麼@Jakub說..但這裏是相同的功能,但與減計數器,如果計數小於0,將計數減過

(function($) { 
$.fn.counted = function(options) { 
    var settings = { 
     count: 300 
    };  
    options = $.extend(settings, options || {}); 
    return this.each(function() {  
     var $this = $(this);  
     var counter = $('<div/>').html(options.count).insertAfter($(this));    
     $(this).keyup(function(e) { 
      var count = options.count - $this.val().length; 

      // Here is the change 
      counter.html(count); 

     }); 
    }); 
}; 

})(jQuery); 

$(function() { 
    $('textarea.counted').counted({count: 10}); 
}); 

1

下面是HTML的限制如果你喜歡:在Chrome

<input type="text" maxlength="2" />