Jak ajax-przesłać formularz textarea wejście z CKEditor?
Używam CKEditor, jQuery i jQuery form plugin i chciałbym przesłać zawartość formularza CKEditor za pomocą zapytania Ajax. Oto Mój kod:
<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>
Niestety, wydaje się, że żądanie Ajax nie przekazuje parametru bodyText
;
Co zrobiłem źle lub Jak mogę osiągnąć to, czego potrzebuję?
Dziękuję.6 answers
Musisz najpierw wywołać poniższe wywołanie, aby CKEDITORs zaktualizował swoje powiązane pola..
for ( instance in CKEDITOR.instances )
CKEDITOR.instances[instance].updateElement();
Więc
HTML
<a onClick="CKupdate();$('#article-form').ajaxSubmit();">Submit</a>
I javascript
function CKupdate(){
for ( instance in CKEDITOR.instances )
CKEDITOR.instances[instance].updateElement();
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-11-22 12:45:07
To działa dla mnie najlepiej: przed wywołaniem zwrotnym
$('form#description').ajaxForm({
beforeSerialize:function($Form, options){
/* Before serialize */
for ( instance in CKEDITOR.instances ) {
CKEDITOR.instances[instance].updateElement();
}
return true;
},
// other options
});
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-09-13 09:46:53
Jeśli używasz jQuery form plugin , możesz użyć opcji beforeSubmit dla bardziej eleganckiego rozwiązania:
$("#form").ajaxForm({
beforeSubmit: function()
{
/* Before submit */
for ( instance in CKEDITOR.instances )
{
CKEDITOR.instances[instance].updateElement();
}
},
// ... other options
});
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-09-13 09:47:00
W moim przypadku pomogło mi to, po prostu używam tych dwóch linijek przed seializacją formularza.
for ( instance in CKEDITOR.instances )
CKEDITOR.instances[instance].updateElement();
var data = $('#myForm').serializeArray();
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-05-09 00:52:17
Próbowałem czegoś takiego:
Najpierw musiałem umieścić id = "# myForm " na @ Html.BeginForm później umieszczam je w mojej części skryptów, gdzie w używam skryptu:
<script type="text/javascript">
$(document).ready(function CKupdate() {
$('#myForm').ajaxForm(function () {
for (instance in CKEDITOR.instances) {
CKEDITOR.instances[instance].updateElement();
}
});
});
</script>
A potem zrobilem cos takiego=] dla mojego przycisku submit i u mnie dziala dobrze, juz nie naciskajac dwa razy Submit=]
<button type="submit" id="submitButton" onclick="CKupdate();$('#myForm').ajaxSubmit();">Submit</button>
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-12-03 10:55:36
Zrobiłem to tak:
$('#MyTextArea').closest('form').submit(CKupdate);
function CKupdate() {
for (instance in CKEDITOR.instances)
CKEDITOR.instances[instance].updateElement();
return true;
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-04-22 07:28:16