JQuery - проверка

Clay Barnard спросил: 12 мая 2018 в 04:55 в: javascript

У меня возникла проблема с моим процессом проверки. Я не использую стандартную кнопку "отправить", скорее у меня есть <span class="button" id="print">Print</span>, а jQuery прослушивает клик. Это код проверки, который у меня есть при нажатии этой кнопки:

var validation = "";
function validate() {
  $("#servDetails").find("input").each(function () {
    if ($(this).prop("required") && $(this).val() == "") {
      validation = false;
      }
    else {
      validation = true;
      }
    });  $("#checklist").find("input[required]").each(function () {
    if ($(this).prop("required") && $(this).val() == "") {
      validation = false;
      }
    else {
      validation = true;
      }
    });
  }$("#print").on("click", function() {
  validate();  if (validation == false) {
    alert("Please fill out all required inputs!");
    return false;
    }
  else {
    window.print();
    }
  });

Если я нажму кнопку, не заполняя ничего (все элементы пустые), я получаю свой alert, как и ожидалось.

Если я заполню все необходимые элементы, он вытащит печатный набор, как ожидалось.

Однако, если я оставлю некоторые из полей пустым в то время как другие правильно заполнены, он по-прежнему печатает, а не дает мне alert, как мне нужно. Любые мысли?

1 ответ

Есть решение
AlexT ответил: 12 мая 2018 в 07:06

Код должен быть переписан или лучше заменить его на любой плагин проверки.

Но в вашем случае, я полагаю, вы просто забыли вернуться, если вы нашли какое-то не заполненное поле , Поэтому, если у вас есть заполненный ввод, он переопределяет переменную validation .

Простейшим решением является удаление кодовых блоков else {validation = true;} и добавление

validation = true;

в начале функции.