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

我正在修改一些jquery代码来限制文本字段的字数,但我无法弄清楚如何获取值。 这是代码:

 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'); } }); });  

具体来说,“$ wordCount”应该等于返回当前值?

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

有任何想法吗?

谢谢,斯科特

我不太了解$ 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'); } }); 

这只是扩展了Pritam的上述,很好的答案,我发现它表现得非常奇怪并且发生了变化

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

至:

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

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

以下脚本不允许您输入超过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); } }); 

如果我理解正确,你需要将代码放在输入/ textarea的事件处理程序中,例如在一个事件处理程序中,用于按键事件。 这样,您可以在用户将文本输入到输入/文本区域时限制单词的数量。

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

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