2009-10-16 32 views
1

我正在修改一些jquery代碼來限制文本字段的字數,但我無法弄清楚如何獲取值。這裏的代碼:在JQuery中限制文本字段的字數

<script> 

var $limitWords = 20; 
var $wordCount = $('#count').val(); 

    $(document).ready(function(){ 
     $("#edit-field-message-0-value").keyup(function() { 
     $('#count').html($('#edit-field-message-0-value').val().split(/\b[\s,\.-:;]*/).length); 

     if ($wordCount > $limitWords) { 
     $('#edit-field-message-0-value').addClass('error'); 
     } else { 
     $('#edit-field-message-0-value').addClass('not-error'); 
     } 
     }); 
    }); 

</script> 

具體來說,什麼應該「$ wordCount」等於返回當前值?

我認爲這應該很容易,但我似乎無法弄清楚。

任何想法?

謝謝,斯科特

+1

借用SO的意見代碼; ) – Seb 2009-10-16 17:45:17

回答

2

我不太瞭解$ wordCount變量。我相信你可以嘗試做如下:

$("#edit-field-message-0-value").keyup(function() { 
    var $this = $(this); 
    var wordcount = $this.val().split(/\b[\s,\.-:;]*/).length; 

    if (wordcount > $limitWords) { 
     $this.addClass('error'); 
    } else { 
     $this.addClass('not-error'); 
    } 
}); 

,我也要去想你想存儲當前計數:

$("#edit-field-message-0-value").keyup(function() { 
    var $this = $(this); 
    var wordcount = $this.val().split(/\b[\s,\.-:;]*/).length; 
    if (wordcount > $limitWords) { 
     $('#count').html($limitWords); 
     $this.addClass('error'); 
    } else { 
     $('#count').html(wordcount); 
     $this.addClass('not-error'); 
    } 
}); 
+0

我不能標記你的答案和拉斯康姆的答案,但謝謝指出這一點對我來說。基本上,我需要創建一個事件處理程序來定義wordcount變量。 – skhot 2009-10-16 18:10:20

+0

在這裏空間被視爲一個詞,因此改變了字數統計的想法 – Athul 2012-09-15 07:32:20

0

因爲我們不知道「#COUNT」元素是什麼,我把隊列從設置使用HTML(...)的值的方法。所以,這應該工作:

var $wordCount = $('#count').html(); 
1

如果我理解正確的話,你需要把代碼來獲得輸入/ textarea的在事件處理中的價值,例如在事件處理敵我的按鍵事件。這樣,您可以在用戶將文本輸入到輸入/文本區時限制單詞的數量。

+0

我不能標記你的答案和cballou答案是否正確,但是謝謝你爲我指出這一點。基本上,我需要創建一個事件處理程序來定義wordcount變量 - cballou的答案就是一個例子。 從此成爲完美。感謝Russ Cam! – skhot 2009-10-16 18:12:50

+0

沒問題,很高興幫助:) – 2009-10-16 20:17:45

2

下面的腳本不會讓你輸入超過limitWord

var limitWord = 20; 
var maxchars = 0; 
$("#edit-field-message-0-value").keyup(function() { 
    $this = $(this); 
    var wordcount = $this.val().split(/\b[\s,\.-:;]*/).length - 1; 
    if (wordcount < limitWord) { 
     chars = $this.val().length; 
    } 
    else{ 
    var text = $(this).val(); 
    var new_text = text.substr(0,chars); 
    $(this).val(new_text); 
    } 
}); 
2

這只是從Pritam以上,極大的答案擴大,我發現它表現得相當奇怪的是,改變

var wordcount = $this.val().split(/\b[\s,.-:;]*/).length - 1;

要:

var wordcount = jQuery.trim($this.val()).split(/\b[\s,.-:;]*/).length;

這個排序古怪的單詞計數的行爲(如果你顯示的值返回給用戶的反饋)