остановить или разрешить закрытие модального окна

#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;});