jQuery功能,根据粘贴文本时不起作用的字数限制文本输入
jQuery function to limit text entry based on word-count not working while pasting text
这是jquery代码
var max_count = 200;
$(document).ready(function () {
var wordCounts = {};
$("#word_count").keyup(function () {
var matches = this.value.match(/'b/g);
wordCounts[this.id] = matches ? matches.length / 2 : 0;
var finalCount = 0;
$.each(wordCounts, function (k, v) {
finalCount += v;
});
var vl = this.value;
if (finalCount > max_count) {
vl = vl.substring(0, vl.length - 1);
this.value = vl;
}
var countleft = parseInt(max_count - finalCount);
$('#display_count').html(finalCount);
$('#count_left').html(countleft);
am_cal(finalCount);
}).keyup();
});
此代码的工作是计算单词数并将其限制为增加 200。
当我们在文本区域中输入时,它可以正常工作,并且计数,当它达到 200 时,它不允许写入更多,但是当我复制粘贴代码时,它一直超过 200,我该如何纠正?
这是小提琴
http://jsfiddle.net/aVd4H/
提前致谢
首先,您的代码更正正在updated
这是复制粘贴字数限制的演示,您可以将其集成到代码中。
jQuery(document).ready(function($) {
function limits(obj, limit){
var text = $(obj).val();
var length = text.length;
if(length > limit){
$(obj).val(text.substr(0,limit));
} else {
/**
* Alerts the user of the remaining characters.
* I do alert here, but you can do any other thing you like.
*/
alert(limit - length + " characters remaining!");
}
}
$('textarea').keyup(function() {
limits($(this), 20);
});
});
根据您的要求完成代码 这里
最后调用 am_cal() 函数。
var max_count = 200;
$(document).ready(function () {
var wordCounts = {};
$("#word_count").keyup(function () {
CheckAndUpdateWordCount();
});
});
将逻辑放在通用方法中。 在 KeyUp 事件和 afterpaste 事件中调用该方法。
function CheckAndUpdateWordCount()
{
var Myelement = $("#word_count");
var matches = Myelement .value.match(/'b/g);
wordCounts[Myelement.id] = matches ? matches.length / 2 : 0;
var finalCount = 0;
$.each(wordCounts, function (k, v) {
finalCount += v;
});
var vl = Myelement.value;
if (finalCount > max_count) {
vl = vl.substring(0, vl.length - 1);
Myelement.value = vl;
}
var countleft = parseInt(max_count - finalCount);
$('#display_count').html(finalCount);
$('#count_left').html(countleft);
am_cal(finalCount);
}
//Custom event After paste
$('HTML').live('paste', function (e) {
e = $.extend({}, e, { type: 'afterpaste' });
window.setTimeout(function () { $(e.target).trigger(e); }, 0);
});
使用上述方法。
$("#word_count").bind('afterpaste', function (e) {
//call a method to check
//call the method here to check the word count after pasting any content.
CheckAndUpdateWordCount();
});
相关文章:
- 让文本输入幻灯片显示输入时的新文本输入?然后向后滑动
- Sails.js:同时发布文本输入和一个文件
- 来自文本输入null的html javascript变量
- 当没有文本输入聚焦时检测空格键按下
- JS中的按钮和文本输入
- JavaScript:在调用函数的文本输入上按enter键
- jQuery自动完成功能不适用于多个文本输入
- 使用JS从选择和文本输入中捕获值,并将输出返回到HTML
- 如何通过jQuery发送选定的元素和文本输入
- HTML如何根据javascript函数的返回值限制文本输入
- jquery插件或javascript方法自动调整文本输入(而非文本区域)(固定宽度)可变高度的大小
- 在jquery中获取文本输入val始终为空
- HTML文本输入大小
- 文本输入与文本区域
- 角度ui选择标记模糊时丢失文本输入
- 文本输入值中的JavaScript变量
- Angular指令中的最佳实践是将文本输入设置为英尺和英寸的格式
- 如何在不通过模型验证的情况下屏蔽文本输入中输入的字符
- 在文本输入区域中创建双向更新
- 不使用自定义CSS或HTML(使用框架方法)的角度材质文本输入或文本区域标签大小