Estoy muy confundido con este código. Intento permitir que la ventana se cierre si todas las validaciones, incluso la llamada de ajax, son correctas. El problema es que cuando ejecuto preventDefault ya no puedo cancelarlo. En resumen, si hago clic en el botón guardar, si todo es correcto, cierra la ventana modal y si no es correcto, cancela el cierre. Espero que puedas ayudarme. Gracias
$('#modalAltaReceta').on('hide.bs.modal', function(e){ var cancel = false; var btn_grabar = false; $("#grabarReceta").click(function() { var cantidadSinIngreso = 0; if($("#inputNombreReceta").val().trim()=="") { alert("Ingrese un nombre para la receta"); cancel = true; } else if($("#inputIntroReceta").val().trim()=="") { alert("Ingrese una introduccion breve"); cancel = true; } else if($("#inputInstruccionesReceta").val().trim()=="") { alert("Explique cuales con los pasos para realizar esta receta"); cancel = true; } cantidadSinIngreso = 0; $(".inputIngredientes").each(function(index, item) { if(item.value.trim() == "") cantidadSinIngreso++ }); if(cantidadSinIngreso > 0) { cancel = true; alert("Ingrese por lo menos un ingrediente"); } else { $.ajax({ url: 'php/recetas.php', async: false, type: 'POST', dataType: 'json', data: "tipo_id=grabarReceta&" + $("#frm_nueva_receta").serialize(), success: function(data) { if(data['msg'] == 'ok') { cancel = true; } } }); return cancel; } }); if(cancel) { e.preventDefault(); e.stopImmediatePropagation(); return false; } });