我的文字来自textarea,用户可能会有合法的回车。
如果文本有一个我想保留的回车符,我该如何使用这个精确的jQuery追加示例。
我正在生成这个html代码,如果变量$ text中有回车符,它就会中断。
示例:
$(".inner").append( "<textarea><?php echo $text; ?></textarea>" );
所以如果:
$text = "Cat
Dog";
然后我得到了这个并导致错误。
$( ".inner" ).append( "<textarea>Cat
Dog</textarea>" );
当append创建这个textarea html时,我该怎么做才能保留回车?
答案 0 :(得分:1)
您需要确保将php值正确传递给javascript。最好的方法是将其编码为json。然后,您可以使用例如.val()
来设置元素的值:
var myText = <?php echo json_encode($text); ?>;
$( ".inner" ).append( $('<textarea>').val(myText) );
答案 1 :(得分:0)
使用addcslashes
函数,它允许将回车符编码为\n
(与javascript兼容)。
$(".inner").append( "<textarea><?php echo addcslashes($text,"\r\n"); ?></textarea>" );
<强>更新强>
我拒绝回答@jeroen的回答。如果你有一个不支持json_encode
的旧PHP版本,你可以使用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;
}
答案 2 :(得分:0)
您需要做的就是:
<强> PHP:强>
$cleaned = str_replace("\r\n", "\\n", $text);
<强> JS:强>
$(".inner").append("<textarea><?= $cleaned ?></textarea>");
答案 3 :(得分:0)
这个来自php.net文档的例子现在正在为我工作。 来自Replace carriage return in an email
// Order of replacement
$order = array("\r\n", "\n", "\r");
$replace = '<br />';
// Processes \r\n's first so they aren't converted twice.
$newstr = str_replace($order, $replace, $text);
&#34; br&#34;标签在textarea内部工作,虽然我不会。