Javascript 如何将验证添加到textarea中,以实现最少250个字和最多1000个字的计数?
我正在尝试在文本区域字段中添加jquery验证,最少250个单词,最多1000个单词。并在文本区域旁边的span标记中显示字数。此外,我还可以如何验证,如果用户复制粘贴到文本区域,那么这个验证也应该工作。任何帮助和建议都将不胜感激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
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字),我是否可以阻止用户不输入或复制/粘贴内容。为此请求更新