2012-04-01 107 views
3

工作我有以下小脚本提交在数据库中存储之前预览一些文字:换行符替换,让他们与jquery

jQuery(function($) { 
    var input = $('#contents'), 
    preview = $('#previewaccordion div.viewcontents'); 

    input.keyup(function(e) { 
     preview.html(input.val()); 
    }); 
}); 

,但如果我换行键入文本却忽视了他们,并写入所有这些都在一行中。我如何更换换行符以便它们正确显示?

回答

5

我假设你正在使用textarea作为输入。有\ n用作换行符,这对HTML没有影响。所以,你必须与BR-标签来替换它们:

input.val().replace(/\n/g, "<br />"); 
+0

这将取代断行的第一次出现而已,代替你应该使用所有出现/ \ n/g的 – 2017-02-12 03:07:06

+1

你是完全正确的,已经更新了答案: - ) – 2017-02-13 06:10:11

5

这与jQuery无关:HTML中的换行符并不重要,它们只是空白(如空格和制表符)。

要强制在HTML中换行,请使用<br>标记。所以,你可以改变

preview.html(input.val()); 

preview.html(input.val().replace(/\r?\n/g, '<br>')); 

请注意,你也不能逃脱HTML特殊字符(如<&),所以如果你键入它们,你的输出可能不正确。所以,你可能会去:

preview.html(input.val().replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/\r?\n/g, '<br>')); 

最后,我勾keypress以及keyup,让你看到通过按键重复造字(其中火灾keypress,但不keyup)。

Live example | source

0

从数据库中呈现输出时,将换行符替换为html断点标记。

3

你好演示在这里:http://jsfiddle.net/STnhV/1/

希望这有助于!干杯!

jQuery代码:

$(document).ready(function() { 
    $('#inputfoo').keyup(function() { 
     $('#outputbar').html($(this).val().replace(/\n/g,'<br/>')); 
    }); 
}); 

​