Подтвердить что ты не робот

Как ajax-отправить форму textarea из CKEditor?

Я использую CKEditor, jQuery и jQuery form plugin, и я хотел бы отправить содержимое формы CkEditor с помощью запроса Ajax. Вот мой код:

<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;

Что я сделал неправильно или как я могу достичь того, что мне нужно?

Спасибо.

4b9b3361

Ответ 1

вам нужно сначала вызвать следующее, чтобы CKEDITOR обновили связанные поля.

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();
}

Ответ 2

Это работает для меня лучше всего: beforeSerialize callback

$('form#description').ajaxForm({
    beforeSerialize:function($Form, options){
        /* Before serialize */
        for ( instance in CKEDITOR.instances ) {
            CKEDITOR.instances[instance].updateElement();
        }
        return true; 
    },
    // other options
});

Ответ 4

В моем случае мне помогло следующее: я просто использую эти две строки перед тем, как заархивировать форму.

  for ( instance in CKEDITOR.instances )
       CKEDITOR.instances[instance].updateElement();

  var data = $('#myForm').serializeArray();

Ответ 5

Я пробовал что-то вроде этого:

Сначала мне пришлось поместить id = "#myForm" в @Html.BeginForm после этого, я поместил их в свою часть скриптов, где я использую script:

<script type="text/javascript">
    $(document).ready(function CKupdate() {
        $('#myForm').ajaxForm(function () {
            for (instance in CKEDITOR.instances) {
                CKEDITOR.instances[instance].updateElement();
            }
        });       
    });
</script>

а затем я сделал что-то вроде этого =] для моей кнопки отправки, и он отлично работает для меня, не более нажав кнопку Отправить дважды =]

<button type="submit" id="submitButton" onclick="CKupdate();$('#myForm').ajaxSubmit();">Submit</button>

Ответ 6

Я просто сделал это так:

$('#MyTextArea').closest('form').submit(CKupdate);

        function CKupdate() {
            for (instance in CKEDITOR.instances)
                CKEDITOR.instances[instance].updateElement();
            return true;
        }