我一直在寻找能够控制在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>
答案 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;
}
}