javascript中的nl2br()等价物[重复]
Posted
技术标签:
【中文标题】javascript中的nl2br()等价物[重复]【英文标题】:nl2br() equivalent in javascript [duplicate] 【发布时间】:2011-11-20 00:53:12 【问题描述】:可能重复:jQuery convert line breaks to br (nl2br equivalent)
目前我为每个evt.which == 13
添加<BR>
。 javascript 是否有 nl2br()
,所以我可以取消这个 evt.which == 13
?
这与 php.js 有何不同
$('#TextArea').keypress(function(evt)
if (evt.which == 13)
var range = $('#TextArea').getSelection();
var image_selection = range.text;
$('#TextArea').replaceSelection('<BR>');
$('#TextArea1').html($('#TextArea').val());
);
【问题讨论】:
空白:前行; white-spac:pre-line;仅有助于渲染。如果您稍后将相同的值导出到 rtf,它会被丢弃。 这个问题可能会产生误导,因为它混合了两个不同的问题:nl2br
和 evt.which == 13
。真的keypress
和evt.which == 13
(这是Enter Key
的事件代码)与将新行转换为HTML 的<br>
标记无关。
【参考方案1】:
看看nl2br on php.js,这似乎正是您要找的。基本上是:
function nl2br (str, is_xhtml)
if (typeof str === 'undefined' || str === null)
return '';
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');
编辑:
您使用nl2br()
的示例可能会更改如下:
$('#TextArea').keypress(function(evt)
$('#TextArea1').html(nl2br($('#TextArea').val()));
);
(请注意,这会在每次按键时更新 #TextArea1
,并且不会更改 #TextArea
的值,这正是我认为您正在寻找的,但我可能会误解)
EDIT2:
如果您想获得旧函数的行为(将<br/>
s 插入#TextArea
),请执行以下操作:
$('#TextArea').keypress(function(evt)
$('#TextArea').html(nl2br($('#TextArea').val())); // replace linebreaks first
$('#TextArea1').html($('#TextArea').val()); // copy to #TextArea1
);
【讨论】:
它在 keypress/keup/keydown 上有效吗? 取决于您如何使用它 - 如果您显示更多代码可能会很有用,因此我可以提示如何集成它。 我通过 keypress/keup/keydown 执行此操作,它认为这就是它的作用,现在我可以将其作为 nlb2r() 回显吗? 你能在一分钟内回顾一下这个问题,用按键更新它 已经完成了,看看我的编辑,我将如何更改您的代码。【参考方案2】:这是 php.js 中的一个函数nl2br。
function nl2br (str, is_xhtml)
// http://kevin.vanzonneveld.net
// + original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
// + improved by: Philip Peterson
// + improved by: Onno Marsman
// + improved by: Atli Þór
// + bugfixed by: Onno Marsman
// + input by: Brett Zamir (http://brett-zamir.me)
// + bugfixed by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
// + improved by: Brett Zamir (http://brett-zamir.me)
// + improved by: Maximusya
// * example 1: nl2br('Kevin\nvan\nZonneveld');
// * returns 1: 'Kevin<br />\nvan<br />\nZonneveld'
// * example 2: nl2br("\nOne\nTwo\n\nThree\n", false);
// * returns 2: '<br>\nOne<br>\nTwo<br>\n<br>\nThree<br>\n'
// * example 3: nl2br("\nOne\nTwo\n\nThree\n", true);
// * returns 3: '<br />\nOne<br />\nTwo<br />\n<br />\nThree<br />\n'
var breakTag = (is_xhtml || typeof is_xhtml === 'undefined') ? '<br ' + '/>' : '<br>'; // Adjust comment to avoid issue on phpjs.org display
return (str + '').replace(/([^>\r\n]?)(\r\n|\n\r|\r|\n)/g, '$1' + breakTag + '$2');
【讨论】:
它在 keypress/keup/keydown 上有效吗? 与keyperss无关。您可以在按键事件回调函数中使用它。 你能在一分钟内回顾一下这个问题,用按键更新它 +1 太棒了,谢谢!以上是关于javascript中的nl2br()等价物[重复]的主要内容,如果未能解决你的问题,请参考以下文章
javascript / jquery中的uniqid()?