Jquery acrescentando valor à textarea não funciona até que o ajax seja enviado pela segunda vez
-
15-11-2019 - |
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,
Solução
Quando você clica em enviar, é isso que acontece:
- Os dados do formulário estão sendo coletados
- beforeSubmit é acionado e os dados coletados do formulário estão sendo passados como o primeiro parâmetro
- 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;
};