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 ответ
Решение
Когда вы нажимаете "Отправить", вот что происходит:
- Данные формы собираются
- beforeSubmit срабатывает, и собранные данные формы передаются в качестве первого параметра
- Вы меняете значение 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;
};