Jquery 将值附加到文本区域在 ajax 第二次提交之前不起作用

发布于 2024-10-18 11:20:29 字数 569 浏览 1 评论 0原文

我在表单中有一个 jquery jhtml WYSIWYG 编辑器,我需要手动将其输出附加到文本区域。该表单是通过 ajax 提交的。 updateText 函数被调用以获取所见即所得 div 中的内容并将其放置在文本区域中以允许 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 实际触发之前单击提交两次。有人有什么想法吗?

谢谢,

I have a jquery jhtml WYSIWYG editor in a form and I need to append its output to a textarea manually. The form is being submitted via ajax. The updateText function is called to grab whats in the wysiwyg div and place it in a textarea to enable ajax to send it. I am using the ajaxForm “beforeSubmit” callback to fire off this function.

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

This is not working on the first submit... you have to click submit twice before updateText actually fires. Does anyone have any ideas?

Thanks,

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

我最亲爱的 2024-10-25 11:20:29

当您点击提交时,会发生以下情况:

  1. 在提交触发之前正在收集表单数据
  2. ,并且收集的表单数据将作为第一个参数传递
  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;
}; 

When you hit submit this is what happens:

  1. Form data is being collected
  2. beforeSubmit fires, and the collected form data is being passed as the first parameter
  3. You're changing the value of textarea, but it's too late, because data has been already collected

Instead of changing textarea's value you should modify formData object.

UPD. Try this:

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

Even easier, remove the hidden textarea and use this:

function updateText(formData, jqForm, options) {
    formData.push({name: 'textarea_name', value: .... })
    return true;
}; 
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文