Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何将验证添加到textarea中,以实现最少250个字和最多1000个字的计数?_Javascript_Jquery_Html_Validation - Fatal编程技术网

Javascript 如何将验证添加到textarea中,以实现最少250个字和最多1000个字的计数?

Javascript 如何将验证添加到textarea中,以实现最少250个字和最多1000个字的计数?,javascript,jquery,html,validation,Javascript,Jquery,Html,Validation,我正在尝试在文本区域字段中添加jquery验证,最少250个单词,最多1000个单词。并在文本区域旁边的span标记中显示字数。此外,我还可以如何验证,如果用户复制粘贴到文本区域,那么这个验证也应该工作。任何帮助和建议都将不胜感激 var maxWords=1000; var-minWords=250; $(document).on('keypress','textarea[name=“write”]”,函数(e){ var$this,wordcount; $this=$(this); wor

我正在尝试在文本区域字段中添加jquery验证,最少250个单词,最多1000个单词。并在文本区域旁边的span标记中显示字数。此外,我还可以如何验证,如果用户复制粘贴到文本区域,那么这个验证也应该工作。任何帮助和建议都将不胜感激

var maxWords=1000;
var-minWords=250;
$(document).on('keypress','textarea[name=“write”]”,函数(e){
var$this,wordcount;
$this=$(this);
wordcount=$this.val().split(/\b[\s,\.-:;]*/).length;
如果(字数>最大字数){
$('.writing_erorr').text(“您已达到允许的最大字数1000。”);
返回false;
}否则{
返回$('#writing span').text('Total words:'+wordcount);
}
});
$(“textarea[name='write']”)。绑定('paste',函数(e){
//使用api访问剪贴板
var pastedData=e.originalEvent.clipboardData.getData('text');
警报(粘贴数据);
var$this,wordcount;
$this=$(this);
wordcount=$this.val().split(/\b[\s,\.-:;]*/).length;
如果(字数>最大字数){
$('.writing_erorr').text(“您已达到允许的最大字数1000。”);
返回false;
}否则{
返回$('#writing span').text('Total words:'+wordcount);
}
});

书写条目
在javascript中:

$('textarea#message_area').on('keyup',function() 
{
  var maxlen = $(this).attr('maxlength');

  var length = $(this).val().length;
  if(length > (maxlen-10) ){
    $('#textarea_message').text('max length '+maxlen+' characters only!')
  }
  else
    {
      $('#textarea_message').text('');
    }
});
要素:

<form>
  <label for="message_area">No more than 100 characters</label>
  <p>
  <textarea id="message_area" maxlength="100" rows="6" cols="70"></textarea>
  </p>
  <span class="hint" id="textarea_message"></span>
</form>

不超过100个字符


下面的代码可以按要求工作,我已经为文本区域添加了一些属性,这样您就可以在一个页面上有多个文本区域,所有这些区域都有不同的限制

您需要添加以下属性
word limit=“true”
max words='n'
min words='n'
。不再需要占位符,因为代码会在页面加载后自动生成占位符

您的示例更为复杂,但允许您做更多的工作(不确定您的总体项目是什么)


字数 进行字数统计的基本代码如下:

wordCount = $.trim( $("#writing").val() ).split(/\s+/).filter(Boolean).length;
代码说明:

  • $(“#writing”).val()
    -获取textarea的值(即字符串)
  • .trim()
    删除字符串开头或结尾的所有空白
  • .split(/\s+/)
    将字符串围绕每个空格进行分割,并将其放入数组中
  • .filter(Boolean)
    跳过数组中的任何空白值,即通过双间距创建的值
  • .length
    获取数组的长度(即有多少个单词)

演示
//循环浏览每个文本区域,并添加带有单个单词限制的占位符
$(“textarea[word limit=true]”)。每个(函数(){
$(this.attr)(“占位符”,“写入条目:”+$(this.attr)(“最小单词”)+“最小单词”,+$(this.attr)(“最大单词”)+“最大单词”);
});
//添加事件触发器以更改具有限制的textareas
$(document).on(“input”,“textarea[word limit=true]”,function(){
//获得个人限制
thisMin=parseInt($(this).attr(“min单词”);
thisMax=parseInt($(this).attr(“max words”);
//创建单词数组,跳过空格
var removedBlanks=[];
removedBlanks=$(this.val().split(/\s+/).filter(布尔值);
//获得字数
var wordCount=removedBlanks.length;
//如果超过字数限制,请从字符串中删除额外的字数
如果(字数>最大值){
//修剪字符串,使用slice获取第一个“n”值
var trimmed=removedBlanks.slice(0,thisMax).join(“”);
//添加空格以确保进一步键入尝试添加新词(而不是添加到倒数第二个词)
$(this.val(trimmed+);
}
//将字数与限制进行比较,并根据需要打印消息
if(字数最大值){
$(this.parent().children(“.writing_error”).text(“单词数超过”+thisMax+”);
}否则{
//无问题,删除警告消息
$(this.parent().children(“.writing_error”).text(“”);
}
});
。写入错误{
颜色:红色;
}
[id^=写入]{
边框底部:1px纯色灰色;
边缘底部:20px;
垫底:20px;
}
标签{
宽度:100%;
}
文本区{
宽度:100%;
利润上限:4倍;
}

写作分录1
写作条目2
写作条目3

我需要数单词而不是字符。基于最少250个和最多1000个字,您希望显示错误消息。如果用户复制粘贴内容,那么如何使此验证也起作用?我在页面/表单中有一个文本区域。如果用户已达到限制(1000字),我是否可以阻止用户不输入或复制/粘贴内容。为此请求更新