使用jQuery,当MySQL中的值包含换行符时,如何设置textarea的内容

时间:2011-04-28 15:41:01

标签: php javascript jquery

为了保持我的代码清洁,我使用jQuery默认了表单的每个元素。

即我的表单包含这样的元素..

<input name="mobile" id="mobile" type="text" />

在我单独的javascript文件中,我从MySQL读取数据,然后在加载表单后使用jQuery进行设置..

$('#mobile').val('07845 887766');

这个值是从MySQL读取的,我在PHP中生成这样的代码..

echo "\n $('#mobile').val('".$user['mobile']."');";

这很好用,但问题在于有textarea字段时..

<textarea name="notes" id="notes" ></textarea>

echo "\n $('#notes').html('TEST');";

这很好用,但当我用数据库中的数据替换它时,可能包含换行符,我收到一个javascript错误。

echo "\n $('#notes').html('".$user['notes']."');";

这可以生成此代码(实际值...)

$("#notes").html("INSERT INTO action    (
                    inputdate,
                )
                VALUES ()");

哪个出错。 “未终止的字符串文字”

4 个答案:

答案 0 :(得分:1)

它可以是单引号而不是双引号,试试这个:

echo PHP_EOL.'$("#notes").html("'.$user['notes'].'");';

答案 1 :(得分:0)

  

未终止的字符串文字

您收到此消息是因为在Javascript中,您无法跨越多行跨越文字字符串。

您需要做的是将$user['notes']中的换行符替换为字符\r\n,以便所有字符串都在一行上,然后<textarea>输入将正确在新行上显示每个项目。

让我们使用json_encode来帮助我们逃避Javascript不喜欢的任何令人讨厌的角色。

// This will convert to be Javascript friendly. 
// Output string will be enclosed in quotes " "
$notes_str = json_encode($user['notes']);
echo "\n $('#notes').html(" . $notes_str . ");";

答案 2 :(得分:0)

用\ n替换你的换行符,如下所示:

echo "\n $('#notes').html('".str_replace("\n","\\n",$user['notes'])."');";

php不是我最强的套装,所以语法可能略有偏差。但基本上用字符“\ n”替换换行符。 (可能我需要处理/ r,或两者的组合)

编辑:显然,如果您使用的是PHP 5.2或更高版本,则可以使用json_encode(,它将处理引号和换行符。

答案 3 :(得分:0)

如果您使用的是智能模板引擎,您可以像 -

一样使用它
$('textarea#myTextAreaId').val({$arrVal.keyValue|@json_encode});

否则它常见于面对这个问题,因为当前.val()对textarea元素进行了回车。