我有一个包含textarea的模态。当用户输入一些文本然后提交模态时,模态关闭,我想将文本存储在HTML中的隐藏字段中。
安全地从textarea中转义所有文本以存储在HTML属性中的最佳方法是什么?必须保留换行符。
如果用户再次打开模式,如何获取存储在隐藏字段中的文本并将其放回textarea中,并填写新的换行符?
当用户提交表单时,如何再次对隐藏字段中的文本进行规范化,以便可以使用新的换行符以原始形式使用或保存到数据库中?
< / LI> 醇>我愿意接受使用JvaScript存储textarea文本的替代解决方案,最终将其发送到PHP。
答案 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());
});
});