我有来自文本区的文本,其中用户可能有合法的回车。
如果文本有我想要保留的回车,我该如何使用这个jQuery追加示例来做到这一点。
我正在生成这段html代码,如果变量$text中有回车符,它就会中断。
示例:
$(".inner").append( "<textarea><?php echo $text; ?></textarea>" );
因此,如果:
$text = "Cat
Dog";
然后我得到了这个,它导致了一个错误。
$( ".inner" ).append( "<textarea>Cat
Dog</textarea>" );
当append创建这个textarea html时,我可以做些什么来保留回车符?
发布于 2015-08-05 03:40:42
您需要确保php值被正确地传递给javascript。要做到这一点,最好的方法是将其编码为json。然后,您可以使用例如.val()
来设置元素的值:
var myText = <?php echo json_encode($text); ?>;
$( ".inner" ).append( $('<textarea>').val(myText) );
发布于 2015-08-05 03:48:44
使用addcslashes
函数,它允许将回车符编码为\n
(与javascript兼容)。
$(".inner").append( "<textarea><?php echo addcslashes($text,"\r\n"); ?></textarea>" );
Function reference
更新
我拒绝回答@jeroen的答案,如果你有一个不支持json_encode
的旧版本,你可以使用Chengings' function
function escape_javascript_string($str){
// if php supports json_encode, use it (support utf-8)
if (function_exists('json_encode')) {
return json_encode($str);
}
// php 5.1 or lower not support json_encode, so use str_replace and addcslashes
// remove carriage return
$str = str_replace("\r", '', (string) $str);
// escape all characters with ASCII code between 0 and 31
$str = addcslashes($str, "\0..\37'\\");
// escape double quotes
$str = str_replace('"', '\"', $str);
// replace \n with double quotes
$str = str_replace("\n", '\n', $str);
return $str;
}
发布于 2015-08-05 03:55:12
你所需要做的就是:
PHP:
$cleaned = str_replace("\r\n", "\\n", $text);
JS:
$(".inner").append("<textarea><?= $cleaned ?></textarea>");
https://stackoverflow.com/questions/31817614
复制相似问题