Ninguna de estas respuestas funcionará para varias cargas de archivos. Mi caso implicaba permitir múltiples archivos adjuntos en un hilo de comentarios. Así que tuve que guardar el comentario primero para obtener la identificación, y luego cargar y guardar todos los archivos adjuntos. Esto parece algo trivial, pero con este complemento no es tan intuitivo. Mi solución usa eventos personalizados en jQuery, y funciona muy bien.
La respuesta actualmente aceptada se vincula al evento de clic de un botón en la devolución de llamada 'Agregar', pero la devolución de llamada 'agregar' se llama una vez para cada archivo. Si desenlaza todos los eventos cada vez, solo se cargará el último archivo.
$('#fileupload').fileupload({
dataType: 'json',
add: function (e, data) {
$("#up_btn").on('customName', function (e) {
data.submit();
});
},
});
Al unirse el botón de enviar a un nombre personalizado, podemos hacer lo que queremos procesamiento previo antes de enviar las imágenes. En mi caso, implicaba enviar el comentario y recuperar el ID del comentario, lo que hice en una llamada por separado. Este código solo responde al clic, pero puede hacer lo que quiera antes de activar el evento.
$("#up_btn").on('click', function (e) {
e.preventDefault();
$("#up_btn").trigger("customName");
});
Puede pasar cualquier dato que desee cuando se dispara el evento, por lo que realmente le da un control completo sobre su forma.
Asegúrese de que el botón #up_btn no esté en el formulario #fileupload. – krizajb
También es probable que desee utilizar 'one' en lugar de' on' (y volver a enlazar el evento post-submit) para evitar solicitudes duplicadas – zykadelic
Esto funcionará para evitar solicitudes duplicadas: '$ (" # imgupload "). Unbind ('click ') .on (' click ', function() {data.submit();}); 'como @zykadelic sugirió –