моя функция для проверки флажка в форме не работает с jquery - PullRequest
0 голосов
/ 13 апреля 2020

Функция проверки термина не работает, чтобы проверить флажок в HTML форме с jQuery ...

Вот мой код, установите флажок и щелкните снаружи, чтобы вызвать проверку:

function check_term() {
  var term = $("#term").val()
  if (term.checked = true) {
    $("term_error_message").hide();
  } else {
    $("term_error_message").html("Please accept our terms and conditions");
    $("term_error_message").show();
    error_term = true;
  }
  console.log("error_term is " + error_term);
}

$("#term_error_message").hide()
var error_term = false;
$("#term").focusout(function() {
  check_term()
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<div>  
  <input id="term" type="checkbox"> I Accept the terms and conditions
</div>
<div id="term_error_message"></div>

Ответы [ 2 ]

0 голосов
/ 13 апреля 2020

Рассмотрим следующее.

function check_term() {
  var term = $("#term");
  if (term.prop("checked")) {
    $("#term_error_message").hide();
  } else {
    $("#term_error_message").html("Please accept our terms and conditions");
    $("#term_error_message").show();
  }
  return term.prop("checked");
}

var error_term = false;
$("#term_error_message").hide()
$("#term").blur(function() {
  error_term = check_term();
});

Назначение значения #term даст вам строку, а не объект. Итак, term.checked будет undefined. Вы хотите, чтобы проверить свойство флажка, чтобы увидеть, если он установлен или нет. .prop(), поскольку получатель вернет true или false для проверенного свойства.

Вам также необходимо использовать правильный селектор в вашем jQuery. Я думаю, вы также имеете в виду обратный вызов blur против focusout.

Вы также можете использовать .is(), например, так.

function check_term() {
  if ($("#term").is(":checked")) {
    $("#term_error_message").hide();
  } else {
    $("#term_error_message").html("Please accept our terms and conditions");
    $("#term_error_message").show();
  }
  return $("#term").is(":checked");
}

Это также собирается вернуть true или false.

0 голосов
/ 13 апреля 2020

В вашем операторе if вы присваиваете значение true term.checked. Вы должны использовать оператор сравнения === вместо =.

Вот так: if (term.checked === true) {

Я не знаю, решит ли это все ваши проблемы, но это только начало .

Посетите эту ссылку для получения дополнительной информации: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Expressions_and_Operators#Comparison

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