【问题标题】:Remove words after particular number using JQuery使用 JQuery 删除特定数字后的单词
【发布时间】:2015-06-09 22:01:03
【问题描述】:

我有一个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 个空格,然后在该字符数之前获取子字符串。

【问题讨论】:

  • 要求 1) 保留,还是 2) 删除标点符号? , 例如 , , . , ; , : ?

标签: jquery regex string


【解决方案1】:

改为删除字词;您可以将前 30 个单词分配给 textarea 值。

下一个代码运行良好。 split() 定界符不会被删除。我使用了capturing parentheses:任何捕获的文本都包含在结果字符串数组中。

注意:

您必须使用两倍于您想要限制的金额。您应该使用 60

我创建了一个“常量”MAX_WORDS_ALLOW 让事情变得最简单。

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/

【讨论】:

  • 他不仅在空格上分裂。
  • 如果有人在你的输入框上复制粘贴了怎么办...会超过30...检查一下...
  • 我想这里的整个问题是关于如何验证输入框超过 30 个字符...
  • @VishalWadhawan 效果很好;)
  • 是的,我已经测试过了,我会用 30 个字符替换文本,所以复制粘贴不会有问题
猜你喜欢
  • 2019-09-11
  • 1970-01-01
  • 2017-09-22
  • 1970-01-01
  • 1970-01-01
  • 2014-02-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多