Проверка формы JavaScript: если рассматриваемый оператор выбирает, тег запускается, даже если параметр имеет значение false - PullRequest
0 голосов
/ 08 мая 2018

Я работал над сценарием, чтобы проверить, не заполнены ли поля для моей формы. Все они работают хорошо, однако для полей дня рождения, которые используют тег выбора и опции, при выборе любого месяца все еще возвращается текст «Выберите действительную дату». Я пытаюсь вывести этот текст только тогда, когда пользователь выбирает «Месяц» из выпадающего списка, и не позволяю этому возвращаться, если пользователь выбирает любой нормальный месяц. Любая помощь будет оценена!

function validateStudentSignUpForm() {
  var first = document.getElementById("first").value;
  var last = document.getElementById("last").value;
  var email1 = document.getElementById("email1").value;
  var password1 = document.getElementById("password1").value;
  var parentFirst = document.getElementById("parent-first").value;
  var parentLast = document.getElementById("parent-last").value;
  var childFirst = document.getElementById("child-first").value;
  var email2 = document.getElementById("email2").value;
  var password2 = document.getElementById("password2").value;
  var month1 = document.getElementById("option-month1").value;

  // First name can't be blank
  if (first == "") {
    document.getElementById("first").className = document.getElementById("first").className + " error";
    document.getElementById("firstid").innerHTML = "Can't be blank";
  }

  // Last name can't be blank
  if (last == "") {
    document.getElementById("last").className = document.getElementById("last").className + " error";
    document.getElementById("lastid").innerHTML = "Can't be blank";
  }

  // Email can't be blank
  if (email1 == "") {
    document.getElementById("email1").className = document.getElementById("email1").className + " error";
    document.getElementById("email1id").innerHTML = "Can't be blank";
  }

  // Password can't be blank
  if (password1 == "") {
    document.getElementById("password1").className = document.getElementById("password1").className + " error";
    document.getElementById("password1id").innerHTML = "Can't be blank";
  }

  // Parent first can't be blank
  if (parentFirst == "") {
    document.getElementById("parent-first").className = document.getElementById("parent-first").className + " error";
    document.getElementById("parent-firstid").innerHTML = "Can't be blank";
  }

  // Parent last can't be blank
  if (parentLast == "") {
    document.getElementById("parent-last").className = document.getElementById("parent-last").className + " error";
    document.getElementById("parent-lastid").innerHTML = "Can't be blank";
  }

  // Child first can't be blank
  if (childFirst == "") {
    document.getElementById("child-first").className = document.getElementById("child-first").className + " error";
    document.getElementById("child-firstid").innerHTML = "Can't be blank";
  }

  // Email can't be blank
  if (email2 == "") {
    document.getElementById("email2").className = document.getElementById("email2").className + " error";
    document.getElementById("email2id").innerHTML = "Can't be blank";
  }

  // Password can't be blank
  if (password2 == "") {
    document.getElementById("password2").className = document.getElementById("password2").className + " error";
    document.getElementById("password2id").innerHTML = "Can't be blank";
  }

  // Month can't be default
  if (month1 = "na") {
    document.getElementById("option-month1").className = document.getElementById("option-month1").className + " error";
    document.getElementById("date1id").innerHTML = "Choose a valid date";
  }
  return false;
}

1 Ответ

0 голосов
/ 08 мая 2018

Есть две проблемы:

  1. Вы используете значение элемента option, а не select. Значение элемента option будет всегда быть "na". Значение select будет "na", только если выбран этот параметр.

  2. Вы используете = вместо == в сравнении: if (month1 = "na") {. Поскольку вы делаете это только в этом одном сравнении, я предполагаю, что это опечатка, а не недоразумение.

Чтобы исправить это, положите id на select и прочитайте value, а не option value, и используйте == в сравнении.

...