Código
(function($) { $.fn.formly = function(callback) { // Submit button this.on('submit', function(e) { // NOT WORKING AT ALL... e.preventDefault(); var canSubmit = true; $(this).find('input').each(function() { // Required if ($(this).attr('required')) { canSubmit = functions.required(this); } // Validate if ($(this).attr('validate')) { canSubmit = functions.validate(this); } // Match if ($(this).attr('match')) { canSubmit = functions.match(this); } }); if (canSubmit) { if (callback) { var clientInfo = $(this).serializeArray(); /* Password hash function */ var p = $('#reg_pwd').val(), c = $('#confirm_pwd').val(), shaObj = new jsSHA('SHA-512', 'TEXT'); shaObj.update(p); var p_hash = shaObj.getHash("HEX"), shaObj = new jsSHA('SHA-512', 'TEXT'); shaObj.update(c); var c_hash = shaObj.getHash("HEX"); callback(clientInfo, p_hash, c_hash); } } });
En mi archivo scripts.js llamo al plugin y pongo el callback que es el que debería enviar el formulario (dropzone se tiene que encargar de esto, junto a la imagen):
Código
$('#register').formly(function(clientInfo, p_hash, c_hash) { Dropzone.autoDiscover = false; $('#myDropzone').dropzone({ init: function() { var myDropzone = this myDropzone.processQueue(); myDropzone.on('sending', function(data, xhr, formData) { formData.append('client_info', clientInfo); formData.append('reg_pwd', p_hash), formData.append('confirm_pwd', c_hash); console.log('I just sended the info...'); }); myDropzone.on('success', function(file, response) { myDropzone.removeFile(file); response == '' ? window.location.replace('//admin.inmopaco.tk/') : alert('success_' + response); }); } }); });
Para poco, dropzone me da error diciendo que ya esta inicializado... y no se sube nada. Dropzone lo tengo que inicializar fuera de formly y luego dentro tengo que procesar el queue y enviar el formulario. ¿Como prodría hacer esto sin reinicializar dropzone para que no de error?
¿Y para evitar que el formulario se envie al darle al boton? Tiene que ser dropzone el que envie el array y los hashes.
Gracias!