使用javascript将文本插入textarea而无需javascript解析文本

时间:2011-04-21 02:57:37

标签: javascript php string parsing

'<textarea name="textChange" class="signatureChangeText" cols="100" rows="4">'
+ SOME VARIABLE FULL OF TEXT
+ '</textarea>'

前面只是一个简单字符串的一部分,我正在使用它改变javascript函数内部div的innerHTML属性。如果该变量包含一个包含javascript可解析数据(要解释的数据)的字符串,例如添加符号或引号等,那么“一些可变的文本”就是问题 - 脚本会中断。我该如何避免这种情况?顺便说一下,变量对每个用户都是动态的,它由一个php echo语句填充,因此在后端插入到javascript中。我已经想过如何以另一种方式实现这一目标,但没有人会想到这一点。数据来自数据库,我用PHP拉它,我需要将它插入到动态创建的textarea中,并通过innerHTML基于用户命令插入到页面中。谢谢你的帮助。

编辑:请求的上下文功能:

else if (theChange == 'signature') {
        document.getElementById('userPanelChangeBox').innerHTML = 
        '<form action="tinUser_processor.php" method="post">'
        +'Signatures cannot contain any markup (HTML, BBCode, etc) or styling and can only be 4 lines<br />'
        +'Enter your new signature:<br /><br />'
        +'<textarea name="textChange" class="signatureChangeText" cols="100" rows="4">'
        +'<?php echo $userInfo['signature']; ?>'+'</textarea><br /><br />'
        +'<input type="hidden" value="signature" name="typeChange" />'
        +'<input type="submit" value="Submit Change" name="submitter" /></form>';
        }

3 个答案:

答案 0 :(得分:1)

好像你需要转义HTML和单引号。您可以使用PHP的内置htmlentities函数来执行此操作,如下所示:

<?php echo htmlentities($userInfo['signature'], ENT_QUOTES); ?>

答案 1 :(得分:1)

您需要将任何特殊字符转换为HTML实体在服务器,当它在客户端时为时已晚。 e.g:

"foo <= bar"

变为

&ldquo;foo &le; bar&rdquo;

然后当插入字符串时变为:

"&ldquo;foo &le; bar&rdquo;"

而不是

""foo <= bar""

这显然会弄乱客户端的脚本。您也可以使用unicode转义序列。

答案 2 :(得分:0)

如果由于其他原因需要在客户端上完成,这可以(测试):

<textarea id=text></textarea>
<script type="text/javascript">
var signature = "<div>Not actually a div.</div>";
document.getElementById('text').value=signature;

所以,这样的事情会起作用(未经测试):

else if (theChange == 'signature') {
    document.getElementById('userPanelChangeBox').innerHTML = 
    '<form action="tinUser_processor.php" method="post">'
    +'Signatures cannot contain any markup (HTML, BBCode, etc) or styling and can only be 4 lines<br />'
    +'Enter your new signature:<br /><br />'
    +'<textarea name="textChange" class="signatureChangeText" cols="100" rows="4">'
    +'</textarea><br /><br />'
    +'<input type="hidden" value="signature" name="typeChange" />'
    +'<input type="submit" value="Submit Change" name="submitter" /></form>';
    document.getElementById('userPanelChangeBox').textChange.value='<?php echo $userInfo['signature']; ?>';
    }