Jquery acrescentando valor à textarea não funciona até que o ajax seja enviado pela segunda vez

StackOverflow https://stackoverflow.com/questions/5061886

Pergunta

Eu tenho um editor jquery jhtml WYSIWYG em um formulário e preciso anexar sua saída manualmente a uma área de texto.O formulário está sendo enviado via ajax.A função updateText é chamada para pegar o que está no div wysiwyg e colocá-lo em uma área de texto para permitir que o Ajax o envie.Estou usando o retorno de chamada ajaxForm “beforeSubmit” para disparar esta função.

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

Isso não está funcionando no primeiro envio ...você precisa clicar em enviar duas vezes antes que updateText seja realmente acionado.Alguém tem alguma idéia?

Obrigado,

Foi útil?

Solução

Quando você clica em enviar, é isso que acontece:

  1. Os dados do formulário estão sendo coletados
  2. beforeSubmit é acionado e os dados coletados do formulário estão sendo passados ​​como o primeiro parâmetro
  3. Você está alterando o valor da textarea, mas é tarde demais, pois os dados já foram coletados

Em vez de alterar o valor da textarea você deve modificar o objeto formData.

Atualização. Experimente isto:

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

Ainda mais fácil, remova a área de texto oculta e use isto:

function updateText(formData, jqForm, options) {
    formData.push({name: 'textarea_name', value: .... })
    return true;
}; 
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top