为了保持我的代码清洁,我使用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 ()");
哪个出错。 “未终止的字符串文字”
答案 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元素进行了回车。