2013-03-24 39 views
1

數字符我完全瞭解使用.bind('keyup', function() { });算在textareainput字符的方法,但我試圖做一個​​功能,這樣你就可以看到結果在您輸入,versuses ,按住鍵盤上的一個字母,計數不會更新,直到您釋放密鑰後。使用KEYUP jQuery中

var input = $('textarea#input'); 
$('span#character-count').text(input.val().length); 

input.bind('keydown', function() { 
    $('span#character-count').text(input.val().length + 1); 
}); 

我現在的方法是有缺陷的:

當您選擇所有,然後點擊刪除
  • ,計數搞砸。
  • 它需要+1來顯示實時取景

的jsfiddle:http://jsfiddle.net/rdvR7/

回答

4

我建議在KEYUP準確計數比較好,即使是暫時錯誤而鍵被按下,因爲實際上我認爲用戶不經常需要重複使用相同的字符,因此它們不傾向於保持單個按鍵,並且使代碼簡單。但是如果你想的keydown ...

「它需要+1來顯示實時取景」

我想你知道,那是因爲該領域的加工過程中的電流值keydown事件不包括與按鍵相關的更改 - 如果發生這種情況,則無法撤消更改就無法取消keydown事件。

一個簡單的方法來解決是延遲更新計數,直到keydown事件結束後,也許是這樣的:

var input = $('textarea#input'), 
    count = $('span#character-count').text(input.val().length); 

input.bind('keydown', function() { 
    setTimeout(function() { 
     count.text(input.val().length); 
    },4); 
}); 

更新演示:http://jsfiddle.net/nnnnnn/rdvR7/2/

注意的是,用戶可以添加或刪除文本,而不觸發鍵盤事件(通過拖放或剪切/粘貼)。

0

綁定 「的keyup」 事件,當用戶選擇文本的textarea:

var input = $('textarea#input'); 
$('span#character-count').text(input.val().length); 

input.bind('keydown', function(e) { 
    $('span#character-count').text(0); 
    input.select(function() { 
     input.bind('keyup', function(e) { 
      $('span#character-count').text(input.val().length); 
     }) 
    }); 
    $('span#character-count').text(input.val().length); 
}); 

的jsfiddle:http://jsfiddle.net/glenswift/SEBLD/1/

你也可以結合bindidng「keydown」和「keyup」:

var input = $('textarea#input'), 
    firstInput = true; 
$('span#character-count').text(input.val().length); 
input.bind('keydown, keyup', function(e) { 
    $('span#character-count').text(0); 
    $('span#character-count').text(input.val().length); 
}); 

的jsfiddle:http://jsfiddle.net/glenswift/L6DR8/1/

+0

請注意,這將綁定越來越多的select處理程序來響應每個keydown事件,然後綁定越來越多的keyup處理程序來響應每個select事件。 (在頁面上可見的實際結果將是相同的,因爲所有的處理程序都會做同樣的事情,但仍然...) – nnnnnn 2013-03-24 03:41:32

+0

對不起,但我很明白你的意思。請解釋你說的意思是什麼「因爲所有的處理者都會做同樣的事情,但仍然」,我試圖解決這個問題。 – 2013-03-24 03:52:17

+0

無論如何,我用另一種方法更新答案,希望它可以幫助你 – 2013-03-24 04:01:57