Остановить выполнение события щелчка Javascript, если условие выполнено

Я пытаюсь остановить выполнение обработчика событий Javascript, когда выполняется какое-то условие, и мой код выглядит так:

 $(".save").click(function (event) {
            $(".loader").fadeIn(300);

            var statusValue = $("#status").val();
            console.info(statusValue);

            if (statusValue == null || statusValue == '') {
                $("#status").css({
                    "border-color": "red",
                    "border-width": "1px",
                    "border-style": "solid"
                });
                event.preventDefault();
                console.info("NOT EXECUTED");
            }

            console.info("EXECUTED");
// .. some more code
}

Когда я проверяю консоль, я получаю такие результаты:

null
null
NOT EXECUTED
EXECUTED

Итак, мне интересно, как же так? Условие If == null выполнено, не должен ли event.preventDefault() останавливать это событие .click от выполнения до конца?

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

<select class = "form-control" id = "status">
        <option value = "Done">Done</option>
        <option value = "Complited">Completed</option>
        <option value = "Cancel">Cancel</option>
</select>

Я не думаю, что event.preventDefault() делает то, что вы думаете

Luca Kiebel 03.05.2018 20:10

В вашем выборе по умолчанию выбрано "Готово".

Gerardo BLANCO 03.05.2018 20:18
event.preventDefault() так не работает. прочтите это для получения дополнительной информации, developer.mozilla.org/en-US/docs/Web/API/Event/preventDefaul‌ t
bowl0stu 03.05.2018 20:23
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
3
1 489
4

Ответы 4

Событие уже происходит. Вы можете использовать это:

 $('form').attr('onsubmit', 'return false;');

Нет, event.preventDefault() не делает то, что вы думаете, в этом случае, если вы хотите остановить выполнение функции, вы можете просто оставить пустой return; в конце блока if. Другое решение - поставить блок else.

event.preventDefault() предотвращает выполнение действия по умолчанию, например, если вы поместите его на <a>link</a>, он не будет перенаправлять на href, потому что по умолчанию щелчок на a перенаправляет страницу на путь на href prop. Пример.

event.preventDefault() не работает в вашем случае, используйте вместо него return;

$(".save").click(function (event) {

    if (true) {
      console.info("EXECUTED");
      return;
      console.info("NOT EXECUTED");
    }

    console.info("NOT EXECUTED");
});
<script src = "https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id = "banner-message">
  <button class = "save">Save</button>
</div>

Чтобы остановить это, используйте это:

throw new Error("Something went badly wrong!");

источник: https://stackoverflow.com/a/9298915/4110122

Другие вопросы по теме