Как вписать исходный текстовый формат абзаца в элемент HTML-абзаца с помощью jquery?

0

Я создаю страницу раздела комментариев клиента на своем веб-сайте, и я хочу, чтобы точный формат вводился пользователем для показа на странице. Здесь я использую элемент абзаца с меньшей ссылкой, используя jQuery. Моя проблема заключается в том, что пользователь вводит длинные наборы параграфа, он отображает за пределами ширины и высоты элемента абзаца, а исходный формат не сохраняется. Я хочу автоматически отрегулировать область элемента абзаца в соответствии с областью абзаца, введенной пользователем. Как это исправить?

JQuery/JavaScript:

jQuery(function() {
    var minimized_elements = $('p.minimize');

    minimized_elements.each(function() {
        var t = $(this).text();
        if(t.length < 120) return;

        $(this).html(
            t.slice(0,120)+'<span>... </span><a href="#" class="more">More</a>'+
            '<span style="display:none;">'+ t.slice(120,t.length)+' <a href="#"      class="less">Less</a></span>'
            );

    });

    $('a.more', minimized_elements).click(function(event) {

        event.preventDefault();
        $(this).hide().prev().hide();
        $(this).next().show();

    });

    $('a.less', minimized_elements).click(function(event) {

        event.preventDefault();
        $(this).parent().hide().prev().show().prev().show();

    });
});

CSS

.more {
    width: 500px;
    background-color: #f0f0f0;
    margin: 10px;
}

p {
    padding: 0 0 20px;
}

HTML

<p id ="content" class="minimize more"  style ="width :500px; height :100px; white-space :pre "> <%# DataBinder.Eval(Container.DataItem,"Comments").ToString() %> </p> 

//where the content of the paragraph came from the database being queried as comments.

1 ответ

0
Лучший ответ

Оригинальная проблема

Чтобы сделать раздел, где ваш комментарий выглядит масштабным с длиной содержимого, вам нужно заменить следующий html:

<p id ="content" class="minimize more"  style ="width :500px; height :100px; white-space :pre ">

до (min-height)

<p id ="content" class="minimize more"  style ="width :500px; min-height :100px; white-space :pre ">

Ваш p, который нормализует элемент с display:inline свойство display:inline, поворачивается для display:block как-то display:block.

Вопрос в комментариях

Текст, взятый из текстовой области, не содержит html. Разрывы строк, дополнительные пробелы (более 1) и табуляции кодируются как таковые и игнорируются браузерами. Таким образом, вам нужно заменить их на html, чтобы отобразить их правильно.

как таковой,
\r\n, \r и \n (line-break) становятся <br/>
\t (вкладки) становятся &nbsp;&nbsp;&nbsp;&nbsp;
(пробелы) становятся &nbsp;

Я сделал небольшую демоверсию для игры.

(Замена символов будет работать либо в php, либо в javascript)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню