jquery - textarea中的最小单词数

时间:2012-08-14 17:51:48

标签: jquery textarea

我一直在寻找能够控制在textarea中输入的最小字数的函数,并且在用户没有输入最小字数的情况下(250个说),会出现警报一旦他试图提交信息。

我正在使用这个主题:http://www.elegantthemes.com/demo/?theme=AskIt

这是表单的提交方式:

<form action="<?php echo(get_permalink($post->ID)); ?>#create_new_post" method="post"> 

这是textarea代码:

<textarea name="et_newpost_content" id="et_newpost_content" class="input"><?php if ( isset( $_POST['et_newpost_content'] ) ) echo esc_textarea( $_POST['et_newpost_content'] ); ?></textarea>

2 个答案:

答案 0 :(得分:7)

你的意思是单词还是字符?如果你想计算单词,一个非常天真的方法是按空格分割并检查结果数组的长度:

if ($("#et_newpost_content").text().split(/\s+/).length < 250) {
  alert('Message must be at least 250 words.')
}

如果您的意思是字符,那就更容易了:

if ($("#et_newpost_content").text().length < 250) {
  alert('Message must be at least 250 characters.')
}

答案 1 :(得分:2)

修改表单标记,使其显示为:

<form onsubmit="checktextarea()" action="<?php echo(get_permalink($post->ID)); ?>#create_new_post" method="post"> 

然后在您的javascript中输入

function checktextarea() {

   var minLength = 15;

   var $textarea = $('#et_newpost_content');
   if($textarea.text().length < minLength) {
      alert('You need to enter at least ' + minLength ' + characters');
      return false;
   }
}

这将阻止提交表单,除非文本区域中文本的字符长度大于为minLength设置的字符长度。

修改

我看到我误读了这个问题并计算了字符,而不是单词。如果您需要单词(以及@João的道具),该函数应该读取类似

的内容
function checktextarea() {

   var minLength = 15;

   var $textarea = $('#et_newpost_content');
   if($textarea.text().split(/\s+/).length < minLength) {
      alert('You need to enter at least ' + minLength + ' words');
      return false;
   }
}

split函数使用正则表达式按空格字符拆分textarea中的文本,并将其放入数组中。然后检查数组的长度,看看你是否有足够的单词

编辑2

在以noConflict模式运行的Wordpress网站中,代码段看起来像

function checktextarea() {

   var minLength = 15;

   var $textarea = jQuery('#et_newpost_content');
   if($textarea.text().split(/\s+/).length < minLength) {
      alert('You need to enter at least ' + minLength + ' words');
      return false;
   }
}