Nessuna di queste risposte funzionerà per più caricamenti di file. Il mio caso comportava l'autorizzazione di più allegati in un thread di commenti. Quindi ho dovuto prima salvare il commento per ottenere l'id, quindi caricare e salvare tutti gli allegati. Sembra una cosa banale, ma con questo plugin non è così intuitivo. La mia soluzione utilizza eventi personalizzati in jQuery e funziona alla grande.
La risposta attualmente accettata si associa all'evento click di un pulsante nel callback "add", ma il callback "add" viene chiamato una volta per ogni file. Se non si raggruppano tutti gli eventi, verrà caricato solo l'ultimo file.
$('#fileupload').fileupload({
dataType: 'json',
add: function (e, data) {
$("#up_btn").on('customName', function (e) {
data.submit();
});
},
});
Legandosi il pulsante di invio per un nome personalizzato, possiamo fare quello che vogliamo pre-elaborazione prima di inviare le immagini. Nel mio caso ha comportato l'invio del commento e il ritorno del commento id che ho fatto in una chiamata separata. Questo codice risponde solo al clic, ma puoi fare tutto ciò che vuoi prima di attivare l'evento.
$("#up_btn").on('click', function (e) {
e.preventDefault();
$("#up_btn").trigger("customName");
});
È possibile passare tutti i dati che si desidera quando si attiva l'evento, in modo che davvero ti dà il controllo completo sopra il vostro modulo.
fonte
2016-07-07 01:25:20
Assicurati che il pulsante #up_btn non sia in #fileupload form. – krizajb
Probabilmente vorrete usare 'uno' invece di' on' (e riassociare l'evento post-invio) per evitare richieste duplicate – zykadelic
Questo funzionerà per prevenire richieste duplicate: '$ (" # imgupload "). Unbind ('click ') .on (' click ', function() {data.submit();}); 'come suggerito da @zykadelic –