2013-10-13 65 views
0

我期望做的是允许2个换行符用于格式化,但是防止3个或更多显示(在提交前的预览中,所以不能删除它出用PHP)在textarea中连续输入2个换行符(提交之前的预览div)

我开始与

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>提供{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'); 
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

小提琴http://jsfiddle.net/JYJBj/ – Kender

回答

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/

+0

寻找能够连续有2个单独的换行符,你的小提琴防止超过1发生......我可以得到1分罚款,我需要连续有1-2个允许,不只是1 – Kender

+0

是的,我不明白,直到你的编辑。我已经更新了JS并且放了一个新的JS小提琴。 – wwwslinger

+1

我又回到了只有空间的修补程序。应该现在工作。 – wwwslinger

相关问题