Jquery, добавляющее значение к textarea, не работает, пока ajax не отправит второй раз - PullRequest
0 голосов
/ 21 февраля 2011

У меня есть 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 Ответ

2 голосов
/ 21 февраля 2011

Когда вы нажимаете кнопку Отправить, это происходит следующим образом:

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