2016-07-05 2 views
0

Мне нужна помощь в предотвращении пуска кнопки, если пользователь не нажимает кнопку «Да» в окне подтверждения, это хорошо работает для отправки, но это, похоже, не имеет никакого эффекта, когда есть javascript, который запускается при нажатии кнопки.Как остановить выполнение javascript с помощью подтверждения?

кнопка:

<input type="button" value="Delete" class="deleteResource btn btn-link NoBorder NoBackGround" data-id="@resource.Id" data-url="@Url.Action("DeleteResource")" data-confirm="are you sure?" /> 

JavaScript:

jQuery(document).ready(function() { 
     jQuery('[data-confirm]').click(function (e) { 
      if (!confirm(jQuery(this).attr("data-confirm"))) { 
       e.preventDefault(); 
       e.stopPropagation(); 
      } 
     }); 
    }); 

    jQuery(document).ready(function() { 
    jQuery('.deleteResource').click(function() { 
     var id = $(this).data('id'); 
     var url = $(this).data('url'); 
     var param = { id: id } 
     $.post(url, param, function (data) { 
      if (data) { 
       location.reload(); 
      } else { 
       alert("Kunde inte utföra åtgärden."); 
      } 
     }); 
    }); 
}); 

я что-то отсутствует, или это просто не представляется возможным?

+0

Вы имели в виду 'jQuery ('. DeleteResource'). Click (function() {'? –

+0

ну, я надеялся, что этого не произойдет, если подтверждение не было хмм. Нажал да – inifus

+0

моя проблема в том, что материал удаляется независимо от – inifus

ответ

1

Для предотвращения использования других обработчиков на одном и том же элементе необходимо stopImmediatePropagation.

1
jQuery(document).ready(function() { 
    jQuery('.deleteResource').click(function() { 
     if (confirm(jQuery(this).attr("data-confirm"))) { 
      var id = $(this).data('id'); 
      var url = $(this).data('url'); 
      var param = { id: id } 
      $.post(url, param, function (data) { 
       if (data) { 
        location.reload(); 
       } else { 
        alert("Kunde inte utföra åtgärden."); 
       } 
      } 
     }); 
    }); 
}); 
+0

Я подумал об этом, но разве это не приведет к тому, что окно подтверждения появится дважды? – inifus

+0

это все, что вам нужно, удалить другую функцию – Tsar

+0

проблема заключается в том, что у меня есть ввод типа submit, который не запускает javascript, я не могу этого предотвратить, если у меня нет другой функции. – inifus

Смежные вопросы