我正在我的网站上创建一个客户评论部分页面,我希望用户输入的确切格式显示在页面中。在这里,我使用的是带有更少链接的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.
最佳答案
原始问题
要使您的评论显示的部分与内容的长度成比例,您需要替换以下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:block
。评论中的问题
从文本区域获取的文本不包含html。换行符,多余的空格(大于1)和制表符均按此类编码,并被浏览器忽略。因此,您需要用html替换它们才能正确显示它们。
因此,
\r\n
,\r
和\n
(换行符)变为<br />
\t
(标签)变为
(空格)变为
我为您制作了little demo玩具。
(替换字符可在php或javascript中使用)