Summernote - 文本在验证时显示为原始 HTML
Summernote - Text displayed as raw HTML on validation
我在前端使用带有 Summernote 的 Codeiginter - 现在在表单中,当某些字段为空时,同一页面加载并进行验证检查。我正在使用以下 JS 和 CI 代码:
$(window).load(function(){
<?php if(isset($article['text']))
{
?>
$('#summernote').code('<?php echo $article['text']; ?>');
<?php } else { ?>
$('#summernote').code('<?php echo $_POST['contents']; ?>').text();
<?php } ?>
});
现在的问题是,验证失败时,上面的代码使用 RAW HTML 填充 Summernote 编辑器,而不是格式化 HTML,因为它应该
This is an example of my first post Pellentesque libero tortor,
tincidunt et, tincidunt eget, semper nec, quam. Lorem ipsum dolor sit
amet, consectetuer adipiscing elit. Pellentesque commodo eros a enim.
Aenean imperdiet. Cras sagittis.
Nam at
tortor in tellus interdum sagittis. Nullam nulla eros, ultricies sit
amet, nonummy id, imperdiet feugiat, pede. Etiam ut purus mattis
mauris sodales aliquam. Curabitur blandit mollis lacus. Phasellus
tempus.
知道为什么会这样吗?我试过 .val 和 .html - 但它们不起作用。请帮忙。
更改代码 html:
$(window).load(function(){
<?php if(isset($article['text']))
{
?>
$('#summernote').html('<?php echo $article['text']; ?>');
<?php } else { ?>
$('#summernote').html('<?php echo $_POST['contents']; ?>');
<?php } ?>
});
好的。经过两天的紧张努力——我找到了原因——这很愚蠢。 Codeigniter 表单验证使用转义字符对所有格式化数据进行编码,并将它们转换为原始 HTML。要解决此问题,请删除 form_validation.php 中的内容验证或表单验证规则。然后你可以输出使用
$('#summernote').code(<?php echo $this->input->post('contents');?>);
谢谢大家的帮助。
您可以使用下面的代码
$(window).load(function(){
// set content
<?php if(isset($article['text'])) { ?>
$('#summernote').html('<?php echo $article['text']; ?>');
<?php } else { ?>
$('#summernote').html('<?php echo $_POST['contents']; ?>');
<?php } ?>
// create editor
$("#summernote").summernote();
});
或
$(window).load(function(){
// create editor
$('#summernote').summernote();
// set content
<?php if(isset($article['text'])) { ?>
$('#summernote').code('<?php echo $article['text']; ?>');
<?php } else { ?>
$('#summernote').code('<?php echo $_POST['contents']; ?>');
<?php } ?>
});
关于您自己的回答,我还有一些话要说,因为这是一个普遍的问题。坦率地说,它并不那么愚蠢,现代框架就是这样做的,如果你不告诉他们这样做的话,它们会转义 html 个字符。
在你的例子中(Codeigniter)告诉你不要转义是在验证部分。
在我的例子中(.net mvc razor views)你可以这样做:
$('#summernote').code("@Html.Raw("<div>your html string</div>")");
我在前端使用带有 Summernote 的 Codeiginter - 现在在表单中,当某些字段为空时,同一页面加载并进行验证检查。我正在使用以下 JS 和 CI 代码:
$(window).load(function(){
<?php if(isset($article['text']))
{
?>
$('#summernote').code('<?php echo $article['text']; ?>');
<?php } else { ?>
$('#summernote').code('<?php echo $_POST['contents']; ?>').text();
<?php } ?>
});
现在的问题是,验证失败时,上面的代码使用 RAW HTML 填充 Summernote 编辑器,而不是格式化 HTML,因为它应该
This is an example of my first post Pellentesque libero tortor, tincidunt et, tincidunt eget, semper nec, quam. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Pellentesque commodo eros a enim. Aenean imperdiet. Cras sagittis.
Nam at tortor in tellus interdum sagittis. Nullam nulla eros, ultricies sit amet, nonummy id, imperdiet feugiat, pede. Etiam ut purus mattis mauris sodales aliquam. Curabitur blandit mollis lacus. Phasellus tempus.
知道为什么会这样吗?我试过 .val 和 .html - 但它们不起作用。请帮忙。
更改代码 html:
$(window).load(function(){
<?php if(isset($article['text']))
{
?>
$('#summernote').html('<?php echo $article['text']; ?>');
<?php } else { ?>
$('#summernote').html('<?php echo $_POST['contents']; ?>');
<?php } ?>
});
好的。经过两天的紧张努力——我找到了原因——这很愚蠢。 Codeigniter 表单验证使用转义字符对所有格式化数据进行编码,并将它们转换为原始 HTML。要解决此问题,请删除 form_validation.php 中的内容验证或表单验证规则。然后你可以输出使用
$('#summernote').code(<?php echo $this->input->post('contents');?>);
谢谢大家的帮助。
您可以使用下面的代码
$(window).load(function(){
// set content
<?php if(isset($article['text'])) { ?>
$('#summernote').html('<?php echo $article['text']; ?>');
<?php } else { ?>
$('#summernote').html('<?php echo $_POST['contents']; ?>');
<?php } ?>
// create editor
$("#summernote").summernote();
});
或
$(window).load(function(){
// create editor
$('#summernote').summernote();
// set content
<?php if(isset($article['text'])) { ?>
$('#summernote').code('<?php echo $article['text']; ?>');
<?php } else { ?>
$('#summernote').code('<?php echo $_POST['contents']; ?>');
<?php } ?>
});
关于您自己的回答,我还有一些话要说,因为这是一个普遍的问题。坦率地说,它并不那么愚蠢,现代框架就是这样做的,如果你不告诉他们这样做的话,它们会转义 html 个字符。
在你的例子中(Codeigniter)告诉你不要转义是在验证部分。
在我的例子中(.net mvc razor views)你可以这样做:
$('#summernote').code("@Html.Raw("<div>your html string</div>")");