如何Ajax的提交从CKEditor表单textareainput?
我正在使用CKEditor,jQuery和jQuery表单插件 ,我想通过Ajax查询提交CkEditor表单的内容。 这是我的代码:
<form id="article-form" name="article-form" method="post" action="/myproject/save"> <textarea name="bodyText" style="visibility: hidden; display: none;"></textarea> <script type="text/javascript"> CKEDITOR.replace('bodyText'); </script> <a onClick="$("#article-form").ajaxSubmit();">Submit</a> </form>
不幸的是,似乎Ajax请求没有传递bodyText
参数;
我做错了什么,或者我怎么能够达到我所需要的?
谢谢。
你需要先调用以下,使CKEDITORs更新其相关领域..
for ( instance in CKEDITOR.instances ) CKEDITOR.instances[instance].updateElement();
所以
HTML
<a onClick="CKupdate();$('#article-form').ajaxSubmit();">Submit</a>
和JavaScript
function CKupdate(){ for ( instance in CKEDITOR.instances ) CKEDITOR.instances[instance].updateElement(); }
这对我来说最好: beforeSerializecallback
$('form#description').ajaxForm({ beforeSerialize:function($Form, options){ /* Before serialize */ for ( instance in CKEDITOR.instances ) { CKEDITOR.instances[instance].updateElement(); } return true; }, // other options });
如果您使用jQuery表单插件 ,则可以使用beforeSubmit选项作为更优雅的解决scheme:
$("#form").ajaxForm({ beforeSubmit: function() { /* Before submit */ for ( instance in CKEDITOR.instances ) { CKEDITOR.instances[instance].updateElement(); } }, // ... other options });
在我的情况下,以下帮助我,我只是使用这两行之前,seializing表单。
for ( instance in CKEDITOR.instances ) CKEDITOR.instances[instance].updateElement(); var data = $('#myForm').serializeArray();
我尝试了这样的事情:
首先,我必须在@ Html.BeginForm上放置一个id =“#myForm”,然后将这些放在脚本部分,在这里我使用脚本:
<script type="text/javascript"> $(document).ready(function CKupdate() { $('#myForm').ajaxForm(function () { for (instance in CKEDITOR.instances) { CKEDITOR.instances[instance].updateElement(); } }); }); </script>
然后我做了这样的事情=]为我的提交button,它对我工作正常,不再按提交两次=]
<button type="submit" id="submitButton" onclick="CKupdate();$('#myForm').ajaxSubmit();">Submit</button>
我只是这样做了:
$('#MyTextArea').closest('form').submit(CKupdate); function CKupdate() { for (instance in CKEDITOR.instances) CKEDITOR.instances[instance].updateElement(); return true; }