2

我一直在到处寻找一个可以控制在 textarea 中输入的最小单词数的函数,如果用户没有输入最小单词数(比如说 250 个),一旦他尝试就会出现警报提交消息。

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

这是提交表单的方式:

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

这是文本区域代码:

<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>
4

2 回答 2

7

你是说单词还是字符?如果你想计算words,一个非常幼稚的方法是用空格分割并检查结果数组的长度:

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

如果您的意思是characters,那么它会容易得多:

if ($("#et_newpost_content").text().length < 250) {
  alert('Message must be at least 250 characters.')
}
于 2012-08-14T17:56:09.560 回答
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;
   }
}
于 2012-08-14T17:58:02.783 回答