将多行文本从数据库加载到TextArea

时间:2011-02-04 17:55:25

标签: php javascript mysql

我在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;
        }

3 个答案:

答案 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属性。我在这里设置了一个简单的例子:

http://jsfiddle.net/wFZWQ/


顺便说一句,由于您在创建页面时使用PHP填充字段,为什么不仅仅填充HTML标记中的数据,这似乎是一个很长的路要走。

另外,由于你似乎没有使用它,你看到[jQuery] [1]它抽象了很多东西,所以不是输入document.getElementById("the_id")来获取一个元素你可以使用CSS选择器只需编写$("#the_id")即可获得相同的元素。您还可以获得大量有用的功能,这使得编写javascript mucxh变得更容易。

[1]:http://jquery.com jQuery