我在MySql数据库中保存了一些多行文本(VARCHAR 255)。当我加载它,并使用标准的PHP函数“nl2br”处理它,它回应良好(多行)。但是,当我从数据库加载多行文本时,将其设为“nl2br”然后将其发送到javascript(因此它显示在textarea中),它将不会显示!怎么了?
echo "<SCRIPT>FillElements('".$subject."','".$text."');</SCRIPT>";
P.S。 FillElements功能:
function FillElements(Sub,Txt)
{
document.getElementById('txtSubject').value=Sub;
document.getElementById('txtMessage').value=Txt;
}
答案 0 :(得分:0)
换行标记(<br />
)不会导致<textarea>
中的实际新行。
但是,您可以将“真实”换行符\n
传递给<textarea>
。
我为此创建了a fiddle。
编辑:对于更新的FillElements
代码:
$subject = "String\nWith\nMultiple\nLines";
printf('<script type="text/javascript">FillElements(%s)</script>',
json_encode($subject)
);
答案 1 :(得分:0)
我的猜测是你的HTML源代码如下所示:
<script>FillElements("foo","foo
bar
baz");<script>
正确?
在JavaScript中,字符串不能跨越多行......
答案 2 :(得分:0)
textarea
实际上并未以与输入元素相同的方式将内容存储在value
之类的属性中。它们实际上将内容存储在<textarea>
和</textarea>
标记之间。这意味着文档中的内容实际上被视为CDATA。
<textarea>
This is my Content
</textarea>
生成一个文本区域,其中包含“This is my Content”作为内容。
这意味着您无法使用您拥有的代码来更改textarea的内容。您必须更改textarea的innerHTML属性。我在这里设置了一个简单的例子:
顺便说一句,由于您在创建页面时使用PHP填充字段,为什么不仅仅填充HTML标记中的数据,这似乎是一个很长的路要走。
另外,由于你似乎没有使用它,你看到[jQuery] [1]它抽象了很多东西,所以不是输入document.getElementById("the_id")
来获取一个元素你可以使用CSS选择器只需编写$("#the_id")
即可获得相同的元素。您还可以获得大量有用的功能,这使得编写javascript mucxh变得更容易。
[1]:http://jquery.com jQuery