2009-10-16 49 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;

这个排序古怪的单词计数的行为(如果你显示的值返回给用户的反馈)