Jquery добавление значения к textarea не работает, пока ajax не отправит второй раз

У меня есть JQuery JHTML WYSIWYG редактор в форме, и мне нужно добавить его вывод в текстовой области вручную. Форма отправляется через ajax. Функция updateText вызывается для захвата содержимого раздела div wysiwyg и помещения его в текстовое поле, чтобы разрешить ajax его отправлять. Я использую обратный вызов ajaxForm "beforeSubmit" для запуска этой функции.

//For Ajax Form
$('#addFaci').ajaxForm({
        beforeSubmit: updateText,
        success: function(response) {
            eval(response);
        }
});

function updateText(formData, jqForm, options){
    var save = '#detail';
    $(save).val($(save).htmlarea("toHtmlString"));
    return true;
}; 

Это не работает при первой отправке... вам нужно дважды нажать кнопку отправить, прежде чем на самом деле сработает updateText. У кого-нибудь есть какие-либо идеи?

Спасибо,

1 ответ

Решение

Когда вы нажимаете "Отправить", вот что происходит:

  1. Данные формы собираются
  2. beforeSubmit срабатывает, и собранные данные формы передаются в качестве первого параметра
  3. Вы меняете значение textarea, но уже слишком поздно, потому что данные уже собраны

Вместо изменения значения textarea вы должны изменить объект formData.

UPD. Попробуй это:

for (var i in formData) {
  if (formData[i].name == '...name of your textarea here...') {
    formData[i].value = ...wysiwyg's html...
  }    
}

Еще проще, удалите скрытую текстовую область и используйте это:

function updateText(formData, jqForm, options) {
    formData.push({name: 'textarea_name', value: .... })
    return true;
}; 
Другие вопросы по тегам