我要做的是允许格式化2个换行符,但阻止显示3个或更多(在提交前预览,所以不能用php删除它)
我从
开始var breakTag = (is_xhtml || typeof is_xhtml === 'undefined') ? '<br />' : '<br>';
return (str + '').replace(/([^>\r\n]?)(\r\n|\n\r|\r|\n){2,}/g, '$1'+ breakTag +'$2');
我尝试添加{2,}
var breakTag = (is_xhtml || typeof is_xhtml === 'undefined') ? '<br />' : '<br>';
return (str + '').replace(/([^>\r\n]?)(\r\n|\n\r|\r|\n){2,}/g, '$1'+ breakTag +'$2');
在<textarea>
this is user input
i have inserted 1 line break
i have inserted 3 line breaks
i have inserted 4 line breaks
我想要的是
this is user input
i have inserted 1 line break
i have inserted 3 line breaks
i have inserted 4 line breaks
我得到的是
this is user inputi have inserted 1 line break
i have inserted 3 line breaks
i have inserted 4 line breaks
没有{2,}显示为输入
奖励,如果我们可以阻止他们在textarea中连续输入2个以上的换行符,并在预览时清理它
*编辑*
$('textarea').keyup(function()
{
var myString = $(this).val();
myString = nl2br(myString);
$('#preview').html(myString);
});
function nl2br (str, is_xhtml)
{
var breakTag = (is_xhtml || typeof is_xhtml === 'undefined') ? '<br />' : '<br>';
return (str + '').replace(/([^>\r\n]?)(\r\n|\n\r|\r|\n)/g, '$1'+ breakTag +'$2');
}
答案 0 :(得分:1)
以下是替换textarea中的值并将<br />
插入div的代码。这不是在jQuery的上下文中,但你不必将它用于这样的事情。不过,转换为jQuery应该很简单
编辑:如果textarea为空,请避免错误。
<script>
function oneBreak(ta) {
outDiv = document.getElementById('outDiv');
if (ta.value.length <= 0) {
outDiv.innerHTML = '';
} else {
var val = ta.value + "";
var ln = "\n";
//normalize line breaks
if (val.match(/(\r\n)/g)) ln = "\r\n";
else if (val.match(/\r/g)) ln = "\r";
val = val.replace(/(\r\n)/g,"\n");
val = val.replace(/\r/g,"\n");
val = val.replace(/(\s*\n{3,})+/g,"\n\n")
// return to default line breaks
ta.value = val.replace(/\n/g,ln);
outDiv.innerHTML = val.replace(/\n/g, "<br />");
}
return outDiv.innerHTML;
}
</script>
<textarea id="breaks" onKeyUp="oneBreak(this);" onChange="oneBreak(this);"></textarea>
<div id="outDiv"></div>
编辑2:添加仅限空格的行。 JS小提琴:http://jsfiddle.net/2T2gv/