使用jQuery安全地将textarea文本存储在隐藏字段中,然后在PHP中使用该文本

时间:2013-06-21 11:44:21

标签: php javascript jquery

我有一个包含textarea的模态。当用户输入一些文本然后提交模态时,模态关闭,我想将文本存储在HTML中的隐藏字段中。

  1. 安全地从textarea中转义所有文本以存储在HTML属性中的最佳方法是什么?必须保留换行符。

  2. 如果用户再次打开模式,如何获取存储在隐藏字段中的文本并将其放回textarea中,并填写新的换行符?

  3. 当用户提交表单时,如何再次对隐藏字段中的文本进行规范化,以便可以使用新的换行符以原始形式使用或保存到数据库中?

    < / LI>

    我愿意接受使用JvaScript存储textarea文本的替代解决方案,最终将其发送到PHP。

2 个答案:

答案 0 :(得分:2)

  

安全地从textarea中转义所有文本以存储在HTML属性中的最佳方法是什么?必须保留换行符。

使用.val()是最佳选择,它不会允许textarea内容突破隐藏的值属性。使用原生Javascript .value也可以正常使用,.val()只是一个包装器。

  

如果用户再次打开模态,我如何抓取存储在隐藏字段中的文本并将其放回textarea中,并填写新的行字符?

当模态打开时:

// #mytextarea = the textarea on the modal
// #myhidden = the hidden on the main page
$('#mytextarea').val($('#myhidden').val()); // set the modal textarea to the value of the hidden

当模态关闭或&#34;保存&#34;:

$('#myhidden').val($('#mytextarea').val());
  

当用户提交表单时,如何再次对隐藏字段中的文本进行规范化,以便可以使用新的行字符将其以原始形式使用或保存到数据库中?

您不需要做任何事情来保留新线路。使用Prepared Statement只需将原始post值保存到数据库。当您在某个页面上输出值时,可以使用PHP <br />将新行转换为nl2br()。只有在输出到输入值以外的任何值时才需要转换新行。另外,请不要忘记通过htmlspecialchars()运行它来阻止XSS。

答案 1 :(得分:0)

希望这就是你要找的东西。

这是JSFiddle Check Out:http://jsfiddle.net/ganeshprabhu1994/THPVa/2/

HTML:

    <textarea id="ta" rows="10" columns="20">
 173-B,Perambalur Road,
 Near Water Tank,
    Thuraiyur-621010
</textarea>
<input type="button" id="cut" value="Cut" />
<input type="button" id="paste" value="Paste" />
<input type="hidden" id="hdn1" value="" />

脚本:

$(function(){
$('#cut').click(function(){
    $('#hdn1').val($('#ta').val());
    $('#ta').val("");
});
$('#paste').click(function(){
    $('#ta').val($('#hdn1').val());
});
});