#javascript #jquery #modal-dialog #bootstrap-modal #preventdefault
Вопрос:
Я очень запутался в этом коде. Я стараюсь разрешить окну закрываться, если все проверки, даже вызов ajax, верны. Проблема в том, что когда я запускаю preventDefault, я больше не могу его отменить. Таким образом, если я нажму на кнопку «Сохранить», если все правильно, оно закроет модальное окно, а если оно неверно, оно отменит закрытие. Надеюсь, вы сможете мне помочь. Спасибо
$('#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 gt; 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=grabarRecetaamp;" $("#frm_nueva_receta").serialize(), success: function(data) { if(data['msg'] == 'ok') { cancel = true; } } }); return cancel; } }); if(cancel) { e.preventDefault(); e.stopImmediatePropagation(); return false; } });
Комментарии:
1. Не размещайте свои события. Выйти
$("#grabarReceta").click(
за пределы$('#modalAltaReceta').on('hide.bs.modal'
2. спасибо, когда выполняется все событие нажатия кнопки «Сохранить», окно закрывается. В таком случае, как мне отменить закрытие окна?
3. Переместите
preventDefault
/stopImmediatePropagation
/return false
внутри события щелчка.4. Но событие, которое я должен остановить, — это закрытие модального. Как мне поступить с другим событием, чтобы сделать это?
5. $(‘#modalAltaReceta’).on(‘скрыть.bs.модальный’, функция(e){ событие = e;}); $(«#grabarReceta»).нажмите(функция() { событие.Предотвратить дефолт(); возвращает false;});