2011-02-04 128 views
0

我在MySql数据库(VARCHAR 255)中保存了一些多行文本。当我加载它,并使用标准的php函数“nl2br”处理它时,它回声良好(多行)。但是,当我从数据库加载多行文本,使其“nl2br”,然后将其发送到JavaScript(所以它显示在textarea),它将不会显示!怎么了?将数据库中的多行文本加载到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

如何将它发送给JavaScript? – 2011-02-04 17:57:36

+0

简单,如下所示:echo“”;在此之前$文本是nl2br编辑。 – guest86 2011-02-04 18:00:01

+0

它适用于文本不是多行的情况,否则它将不起作用 – guest86 2011-02-04 18:00:43

回答

0

textarea s切勿实际内容存储在以相同的方式作为输入元件,如value的属性。他们实际上将内容存储在<textarea></textarea>标签之间。这意味着内容在文档中实际上被视为CDATA。

<textarea> 
    This is my Content 
</textarea> 

产生一个带有“这是我的内容”的文本区域作为内容。

这意味着你不能使用你必须改变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

0

换行标签(<br />)不<textarea>导致实际新线。

不过,您可以将“真实”换行符(\n)传递给您的<textarea>。我为此创建了a fiddle


编辑:有关更新FillElements代码:

$subject = "String\nWith\nMultiple\nLines"; 

printf('<script type="text/javascript">FillElements(%s)</script>', 
    json_encode($subject) 
); 
0

我的猜测是,你的HTML源代码如下所示:

<script>FillElements("foo","foo 
bar 
baz");<script> 

正确?

在JavaScript中,字符串不能跨越多行...

相关问题