如何使用javascript将额外文本替换为(..)

如何使用javascript将额外文本替换为(..),javascript,jquery,html,Javascript,Jquery,Html,我有一个文本文件,用户在其中写东西,我用javascript获取文本框中的文本,并将其显示在段落中。我对段落有文本限制,比如50 chrac。如果用户写入的chrac超过50个,我想在45个chrac之后显示(…)。可以使用javascript吗 $('textarea').on('keyup', function() { var v = this.value.length > 50 ? this.value.substr(0,45) + '(...)' : this.value;

我有一个文本文件,用户在其中写东西,我用javascript获取文本框中的文本,并将其显示在段落中。我对段落有文本限制,比如50 chrac。如果用户写入的chrac超过50个,我想在45个chrac之后显示(…)。可以使用javascript吗

$('textarea').on('keyup', function() {
    var v = this.value.length > 50 ? this.value.substr(0,45) + '(...)' : this.value;
    $('#result').text( v );
});
就像这是用户写的一段话和超过50个chrac

Lorem ipsum dolor sit amet,Concetetur Adipising Elite,sed do 临时性的劳动和生产许可证。乌特埃尼姆酒店 最低成本、最低成本和最低成本 我是一个普通的消费者

我想把这个展示给大家看

Lorem ipsum dolor sit amet,Concetetur Adipising Elite,sed do eiusmod临时输入(…)

可以使用javascript吗

$('textarea').on('keyup', function() {
    var v = this.value.length > 50 ? this.value.substr(0,45) + '(...)' : this.value;
    $('#result').text( v );
});

以下是您在最后一句话时如何将其切断:

对于集合中的每个元素,如果文本长度超过50个字符,则以下内容将在45个字符后追加(

elem = $('p');

elem.each(function(){
   curTxt = $(this).text();
    $(this).text(curTxt.length > 50 ? curTxt.substring(0,45)+'...' : curTxt);
});

这也可以在CSS中完成,以获得更好的结果

。省略号{
空白:nowrap;
溢出:隐藏;
文本溢出:省略号;
}

这样,无论内容如何,文本都将尽可能靠近元素末尾被截断。这看起来比看似随机的截断要好得多。

检查一下这个jsfiddle.net domo

jQuery

$(document).ready(function() {
    var showChar = 100;
    var ellipsestext = "...";
    var moretext = "more";
    var lesstext = "less";
    $('.more').each(function() {
        var content = $(this).html();

        if(content.length > showChar) {

            var c = content.substr(0, showChar);
            var h = content.substr(showChar-1, content.length - showChar);

            var html = c + '<span class="moreellipses">' + ellipsestext+ '&nbsp;</span><span class="morecontent"><span>' + h + '</span>&nbsp;&nbsp;<a href="" class="morelink">' + moretext + '</a></span>';

            $(this).html(html);
        }

    });

    $(".morelink").click(function(){
        if($(this).hasClass("less")) {
            $(this).removeClass("less");
            $(this).html(moretext);
        } else {
            $(this).addClass("less");
            $(this).html(lesstext);
        }
        $(this).parent().prev().toggle();
        $(this).prev().toggle();
        return false;
    });
});
$(文档).ready(函数(){
var-showChar=100;
var ellipseText=“…”;
var moretext=“更多”;
var lesstext=“less”;
$('.more')。每个(函数(){
var content=$(this.html();
如果(content.length>showChar){
var c=content.substr(0,showChar);
var h=content.substr(showChar-1,content.length-showChar);
var html=c+''+ellipseText+''+h+'';
$(this).html(html);
}
});
$(“.morelink”)。单击(函数(){
if($(this).hasClass(“更少”)){
$(此).removeClass(“更少”);
$(this.html(moretext);
}否则{
$(此).addClass(“更少”);
$(this.html(lesstext);
}
$(this.parent().prev().toggle();
$(this.prev().toggle();
返回false;
});
});
HTML

<div class="comment more">
    Lorem ipsum dolor sit amet, consectetur adipiscing elit.
    Vestibulum laoreet, nunc eget laoreet sagittis,
    quam ligula sodales orci, congue imperdiet eros tortor ac lectus.
    Duis eget nisl orci. Aliquam mattis purus non mauris
    blandit id luctus felis convallis.
    Integer varius egestas vestibulum.
    Nullam a dolor arcu, ac tempor elit. Donec.
</div>
<div class="comment more">
    Duis nisl nibh, egestas at fermentum at, viverra et purus.
    Maecenas lobortis odio id sapien facilisis elementum.
    Curabitur et magna justo, et gravida augue.
    Sed tristique pellentesque arcu quis tempor.
</div>
<div class="comment more">
    consectetur adipiscing elit. Proin blandit nunc sed sem dictum id feugiat quam blandit.
    Donec nec sem sed arcu interdum commodo ac ac diam. Donec consequat semper rutrum.
    Vestibulum et mauris elit. Vestibulum mauris lacus, ultricies.
</div>

Lorem ipsum dolor sit amet,是一位杰出的献身者。
拉奥里特前庭,
索多尔西之舌,玉米粥。
两人一组。阿利夸姆马蒂斯purus非毛里斯
这是一只猫。
前庭整型葡萄品种。
纳勒姆是一个多洛阿尔库,ac临时精英。多尼克。
杜伊斯·尼尔斯·尼布,埃格斯塔斯在维韦拉和普鲁斯的发酵室。
我是智者,我是智者。
库拉比图尔和麦格纳·胡斯托,以及孕妇奥古斯。
这是一个临时的问题。
献祭精英。在布朗迪特的名言中,我是布朗迪特的封建者。
Donec nec sem采用了通用交流直径。请不要喝啤酒。
前庭和毛里斯精英。前庭毛里斯腔隙,ultricies。

是的,这是可能的。您可以使用下一个函数缩短字符串:

var str='Lorem ipsum…';
var shortedStr=str.substr(0,50)+'(…)'

无论如何,你可以通过CSS自动完成。您已经在此处找到了关于此主题的答案:


您可以这样设置全局解决方案:

<p class="truncate">
    Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
</p>

使用replace()和concat()。要如何处理多余的文本?它是否需要为以后的使用提供,我们刚刚完全删除?空白是否算作字符?只需完全删除即可。不会将空格计算为character.OP要求的前45个字符,并且只有在输入了50个以上的Holy crap时,才有人显然从未听说过将
$(this)
的结果存储在变量中……好吧,活到老学到老;不过,我建议将这些方法链接起来。或者使用
toggleClass()