我有一个 textarea
,我想在其中仅允许 30 个单词并删除剩余的多余单词:
$("#short_desc").keydown(function(e){
var d = $(this).val().split(/\b[\s,\.-:;]*/).length;
if(d > 30){
alert("Only 30 words allowed");
e.preventDefault();
// here i want to add logic how to remove words.
return false;
}
});
我尝试过字符计数,但无法缩短这个逻辑。 有人可以提供一些提示吗?
我有一个逻辑,计算空格,然后计算字符数,直到 30 个空格,并获取该字符数之前的子字符串。
最佳答案
而是删除这些词;您可以将前 30 个单词分配给 textarea
值。
下一个代码运行良好。 split()
分隔符不会被删除。我使用了捕获括号
:任何捕获的文本都包含在结果字符串数组中。
NOTE:
You must use double the amount you want to limit. You should use 60.
I created a "constant"
MAX_WORDS_ALLOW
for make the things simplest.
var MAX_WORDS_ALLOW = 30;
// Change, keup and paste event.
$("#short_desc").on("change keyup paste", function(e){
var d = $(this).val().split(/\b[\s,\.-:;]*/).length;
if(d > MAX_WORDS_ALLOW ){
alert("Only "+MAX_WORDS_ALLOW +" words allowed: "+d);
e.preventDefault();
// Get the 30 first words
var thirty_Words = $(this).val().split(/(\b[\s,\.-:;]*)/, MAX_WORDS_ALLOW * 2).join("");
// Here I assign the 30 first words to textarea.
$(this).val(thirty_Words);
return false;
}
$("#numberWords").html(d);
});
// Initial text, for the JSFiddle example
$("#short_desc").val("Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus").change();
您可以在此处查看此操作:http://jsfiddle.net/xfhoc1gq/2/
关于jquery - 使用 JQuery 删除特定数字后的单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28646282/