我在项目的管理控制面板上使用了nicEditor。但是有一些奇怪的事情
当我想发送一个值插入数据库时,它工作得很好。但在编辑页面中,当我想处理从文本区域发送的值时,只会发送插入文本区域的第一个值,如果我想更改这个值,在下一页中,我会再次获得第一个值
这是我用来将所有文本区域转换为nicEditor的代码。
bkLib.onDomLoaded(function() { nicEditors.allTextAreas() });
现在想象一下,我有一个由数据库中存储的值组成的表单,如下所示:
<textarea name="description"><?php echo $description; ?></textarea>
如果$description
的值是123,并且我将其更改为1234然后提交表单,则$_POST['description']
发送的值是123,这是不正确的。但是,当我删除加载nicEditor的第一行时,发送的值会更改为1234,这是正确的。
怎么了?
编辑:
这是我的第一页:
<?php
$id = $_GET['id'];
$sql = "SELECT * FROM tbl_hotels WHERE id = ?";
$q = $db->prepare($sql);
$q->execute(array($id));
$result = $q->fetch();
$des = $r['des'];
?>
<form action="process.php" method="post">
<textarea name="des" class="large-input"><?php echo $des; ?></textarea>
<input type="submit" value="send">
</form>
这就是我在下一页中所做的:
<?php
$des = $_POST['des'];
echo $des;
?>
直接从他们的网站上获取http://nicedit.com/docs.php
Nicedit不再处于积极开发中,您可以尝试CKEditor或TinyMCE。
也就是说,你最有可能以其他方式提交表单,而不是正常提交,因此编辑器不会与你的<textarea>
同步,你可以尝试在提交前启动以下代码进行同步。
[nicInstance].saveContent()
- 仅对于正在替换的nicInstance。此方法将编辑器的内容与textarea值同步。如果提交了带有原始表单的表单,则会自动执行此操作。但是,您可能需要自己明确地进行同步
编辑:
JS-
var myform = document.getElementById('myForm');
myform.addEventListener('submit', function() {
var myEditor = nicEditors.findEditor('myEditor');
myEditor.saveContent();
return true;
});
PHP
<form action="process.php" method="post" id="myForm">
<textarea name="des" class="large-input" id="myEditor"><?php echo $des; ?></textarea>
<input type="submit" value="send">
</form>
因为niceEditor操作不同。将niceEditor添加到文本区域时。
bkLib.onDomLoaded(function() { nicEditors.allTextAreas() });
niceEditor隐藏所有文本区域,并添加新的内容可编辑div,而不是文本区域。当您输入任何文本(如123)时,niceEditor会将其作为<span>&nsub123</span>
的html格式。当您尝试用粗体显示文本<span style='bold'>123</span>
时。在您的问题中,当您输入123时,niceEditor会使用类似⊄123
的输入文本添加隐藏空间⊄
。因此,当您发布此文本时,必须通过htmlentities()
ANDmysql_real_escape_string()
转换文本。此外,当从数据库检索这些文本时,您必须通过html_entity_decode()
函数解码这些文本。
<?php
$id = $_GET['id'];
$sql = "SELECT * FROM tbl_hotels WHERE id = ?";
$q = $db->prepare($sql);
$q->execute(array($id));
$result = $q->fetch();
$des = html_entity_decode($r['des']);
?>
和
<?php
$des = htmlentities($_POST['des']);
echo $des;
?>