通过JS改变textarea的值后,但提交表单时还是默认的,为啥!!!
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了通过JS改变textarea的值后,但提交表单时还是默认的,为啥!!!相关的知识,希望对你有一定的参考价值。
参考技术A 因为在提交前编辑器会把textarea的值设为富文本输入框里面的内容。你不能自己用js去修改textarea里面的值,如果需要修改请使用:editor.setContent('xxxx');
来自ckeditor textarea的ajax表单提交值之后没有通过邮件发送
我有一个包含一些文本字段和textarea(ckeditor)的表单,在onclick按钮art_title字段值发送到art_save.php页面后,但不发送textarea的值。
<script src="ckeditor/ckeditor.js"></script>
function saveArt()
{
var title = document.getElementById('art_title'),
art_title = title.value;
var desc = document.getElementById('art_body'),
art_body = desc.value;
jQuery.ajax({
type: 'POST',
url: 'art_save.php',
data: {
title: art_title,
aut: art_author,
tag: art_tag,
desc: art_body
}
});
return false;
}
HTML部分
<form method="post" name="art" id="art">
<input type="text" id="art_title" name="art_title" placeholder="Here goes your title"/>
<textarea class="ckeditor" name="art_body" id="art_body"></textarea>
<input type="submit" name="savedraft" id="savedraft" onclick="saveArt();return false;" value="Need more Research ! Save as Draft" class="button"/>
</form>
答案
您可以强制CKeditor使用以下命令更新textarea值:
for (instance in CKEDITOR.instances) {
CKEDITOR.instances[instance].updateElement();
}
此外,您可以使用.serialize
作为数据 - 如果参数更改,您将不必维护AJAX代码:
<script src="ckeditor/ckeditor.js"></script>
function saveArt()
{
for (instance in CKEDITOR.instances) {
CKEDITOR.instances[instance].updateElement();
}
jQuery.ajax({
type: 'POST',
url: 'art_save.php',
data: $("#art").serialize()
});
return false;
}
另一答案
for (instance in CKEDITOR.instances)
{
CKEDITOR.instances[instance].updateElement();
}
$.ajax({
url: "controllers/c.publicidad.php?task=save",
type: 'post',
data: $("form[name='form']").serialize(),
dataType: 'json',
success: function(data) {
if(data.idenvio != ''){
$("form[name='frmPublicidad']").toggle("slow");
$("#MessageSuscripcion").html(data.message);
}
}
});
另一答案
你可以用这个获得html表单ckeditor:
var art_body = CKEDITOR.instances.art_body.getData();
另一答案
这对我有用:
$.ajax(
{
type: "POST",
url: path+"/html-action",
data: {data1: dataone,
data2: datatwo,
data3: datathree,
data4: datafour,
message: ckeditortxt},
cache: true,
success: function(html)
{
}
}
最初,我使用数据字符串来传递信息,但由于某种原因,保存ckeditor数据的元素不被视为参数。所以我将所有参数分成单个组件,即data1 data2,data3,data4 ....这次,它起作用了
以上是关于通过JS改变textarea的值后,但提交表单时还是默认的,为啥!!!的主要内容,如果未能解决你的问题,请参考以下文章
来自ckeditor textarea的ajax表单提交值之后没有通过邮件发送
当用js动态的改变一个输入框中的值后,并不能触发它的onchange事件why?