在ajax第二次提交之前,Jquery将值附加到textarea不起作用

时间:2011-02-21 03:07:43

标签: javascript jquery ajax ajaxform jhtmlarea

我在表单中有一个jquery jhtml WYSIWYG编辑器,我需要手动将其输出附加到textarea。表格是通过ajax提交的。调用updateText函数来获取wysiwyg div中的whats并将其放在textarea中以使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 个答案:

答案 0 :(得分:2)

当你点击提交时,会发生这种情况:

  1. 正在收集表单数据
  2. beforeSubmit触发,收集的表单数据作为第一个参数传递
  3. 您正在更改textarea的值,但为时已晚,因为已经收集了数据
  4. 您应该修改formData对象,而不是更改textarea的值。

    UPD。试试这个:

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

    更简单,删除隐藏的textarea并使用:

    function updateText(formData, jqForm, options) {
        formData.push({name: 'textarea_name', value: .... })
        return true;
    };