Как отменить обработчик событий в JavaScript или jQuery из другого обработчика событий? - PullRequest
0 голосов
/ 10 марта 2020

Когда нажата кнопка отправки, это событие также обрабатывается некоторым кодом, который отправляет форму - я тоже поделился бы этим кодом, но у меня возникли проблемы с его поиском. Моя проблема в том, что я хочу иметь возможность отменить отправку формы из события нажатия кнопки (как вы можете видеть, я попробовал несколько способов сделать это), но вместо этого происходит то, что появляется сообщение проверки, что часы не совпадают и через несколько секунд появляется сообщение о том, что форма была отправлена.

$(document).ready(function() {
  // find total hours
  var reportedTotalHours = parseFloat($("#TotalHours").text());
  if (!reportedTotalHours) {
    reportedTotalHours = parseFloat($("#EventDuration").text());
    $("#TotalHours").text(reportedTotalHours)
  }

  // handle button click
  $('input[type=button]').on('click', function(evt) {
    if ($(this).val() == 'Close')
      return true;
    var totalHours = 0;
    $('select.dropdownQuestion').each(function(i, sel) {
      var hours = $(sel).find(":selected").text();
      var f = parseFloat(hours);
      if (f != 0 && !Number.isNaN(f))
        totalHours += f;
    });

    // validate that hours are within a quarter hour of each other
    var difference = Math.abs(totalHours - reportedTotalHours);
    if (difference >= 0.25) // discrepancy must be less than a quarter hour
    {
      alert("Total of hours for each activity must equal " + reportedTotalHours + ".");
      evt.preventDefault();
      evt.stopPropagation();
      $("#SkipSave").val('true');
      return false;
    }
    return true;
  });
});

Я думаю, что проблема может быть в том, что я нахожусь в обработчике события нажатия кнопки, и я пытаюсь отменить Вместо этого отправьте событие отправки, но если я изменю это значение:

$('input[type=button]').on('click', function(evt) {

на

$('form').submit(function(evt) {

, тогда проверка, по-видимому, никогда не произойдет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...