在JQuery中限制文本字段的字数

时间:2009-10-16 17:41:06

标签: jquery word-count

我正在修改一些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”应该等于返回当前值?

我认为应该很容易,但我似乎无法弄明白。

有什么想法吗?

谢谢,斯科特

5 个答案:

答案 0 :(得分: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');
    } 
});

答案 1 :(得分: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 :(得分:2)

这只是扩展了Pritam的上述优秀答案,我发现它表现得相当奇怪而且发生了变化

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

要:

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

这会对奇怪的wordcount行为进行排序(如果您将值显示给用户以获得反馈)

答案 3 :(得分:1)

如果我理解正确,你需要输入代码来获取输入/ textarea的事件处理程序中的值,例如在keypress事件的事件处理程序中。这样,您可以在用户输入文本到输入/文本区域时限制单词数。

答案 4 :(得分:0)

由于我们不知道“#count”元素是什么,我从使用html(...)设置值的方法中取出队列。所以,这应该有效:

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