2011-03-03 63 views
0

我有一個textarea,下面有一個計數器輸入字符的計數器。還有一個最大輸入限制。我還添加了一些spans,當它們被點擊時也會將值插入到textarea中。需要幫助調試jQuery字符計數器邏輯

<span id="tag1" class="tags"></span> 
<span id="tag2" class="tags"></span> 
<br> 
<textarea id="myTextArea"></textarea> 
<br> 
Counter: <font id="charCount"></font> 

跨度中的內容包含數值,如(10)。當值插入到textarea中時,我需要計數器增加該值,而不是插入中的字符數。

目前它的一些工作,一些沒有。需要幫助把它放在一起。我把我的代碼在這裏:http://jsfiddle.net/8R9DH/11/


編輯:

預期的行爲:

  1. 輸入文本區域可以通過直接輸入或通過點擊跨度或組合來完成
  2. 一旦達到限制,計數器計數所有字符達到最大和停止輸入
  3. 計數器每次計數字符和空格手動輸入,但當插入是用戶時,計數器將增加包含在數值中的數值。例如。 <文本包括(5)> == 5或<文本包括(10)> == 10 例如,下面的輸入應該算作13個字符:

    <textarea id="myTextArea">abc <text insert (5)> 123</textarea> 
    
+1

什麼具體是你的問題? – offex 2011-03-03 03:55:07

+0

它是越野車,並不像預期的那樣工作。 – santa 2011-03-03 04:05:35

+0

這是暗示的問題,我認爲;) – Blender 2011-03-03 04:09:53

回答

1

您的JavaScript邏輯出現錯誤。稱爲跨度的onClick事件的函數還應該包括正確更新計數的邏輯。下面是它的樣本。

$(".tags").click(function() { 
    var insertTag = $(this).text(), 
     tagLength = insertTag.replace(/[^0-9]/g, ""); 
    var n = parseInt(input.val().replace(/{|}/g, '').length) + parseInt(tagLength); 
    if (n <= limit) { 
     input.append(" &lt;" + insertTag + "&gt;"); 
     count.text(n); 
    } 
}); 

但是這個代碼應該進一步改進,以正確計數正確的文本框中的現有。因此,

input.val().replace(/{|}/g, '').length 

應該改進以單獨過濾現有標籤並使用文本框中的其他字符計算計數。

+0

謝謝。我添加了計數的onclick,並且它的計數很好,但是在輸入文本之後它不再插入......也標籤似乎取代了彼此的計數,而它們需要累計。相同的標籤可以多次使用。我想我需要一種方法來存儲任何更改的總數 - 插入或鍵入。我更新jsfiddle代碼:http://jsfiddle.net/8R9DH/11/ – santa 2011-03-03 16:26:42