输入字段表单验证 - 复选框

Posted

技术标签:

【中文标题】输入字段表单验证 - 复选框【英文标题】:Input field form validation - checkbox 【发布时间】:2020-08-11 21:25:09 【问题描述】:

我只是在学习输入字段和验证,无法解决问题以便在检查输入字段时发送电子邮件。如果不是,它应该向我们显示信息“接受政策”。

function validateContact() 
          var valid = true;

          if (!$("#check").val().checked === true) 
              $("#check").css("border", "solid 1px #ff5d5d");
              $("#check-info").html("Accept Policy");
              valid = false;
          
          else 
              $("#check").css("border", "none");
              $("#check-info").html("");
          

          return valid;
      
<span id="check-info"></span>
<h5><input class="t-contact-form__field u-mt-2" name="check" type="checkbox" id="check"
required>I know the policy and accept.</h5>

【问题讨论】:

validateContact() 在哪里调用?我在任何地方都没有看到任何按钮或点击事件? 我认为您应该创建一个按钮并在其上单击事件,然后检查是否选中了复选框。 【参考方案1】:

在按钮点击事件上调用 validateContact 函数。

【讨论】:

【参考方案2】:

$(function () 
  var form = document.querySelector("#form");

  form.addEventListener("submit", function (e) 
      e.preventDefault();
      var valid;
      valid = validateContact();
      if (valid) 
          jQuery.ajax(
              url: "contact-form.php",
              data: '&name=' + $("#name").val() +
                      '&email=' + $("#email").val() +
                      '&address=' + $("#address").val() +
                      '&check=' + $("#check").val() +
                      '&message=' + $("#message").val(),
              type: "POST",
              success: function () 

                  document.getElementById("form").reset();
                  $('#contact-after-msg').text('Dziękujemy za złożenie zamówienia. Odezwiemy się do Państwa jeszcze dziś.');

              ,
              error: function () 
                  alert('Coś poszło nie tak, spróbuj ponownie');
              
          );
      

【讨论】:

【参考方案3】:

触发表单提交功能并验证表单-

function validateContact() 
  
  let valid = true;

  if ($("#check").is(":checked")) 

    // $("#check").css("border", "none"); // HTML doesn't allow to style checkbox, it is only possible to hide the default one and adding your own custom checkbox 
    $("#check-info").text("");  

  else

    // $("#check").css("outline": "1px solid #ff5d5d"); // -- You can try outline but it won't work as expected.
    $("#check-info").css("color": "#ff5d5d");
    $("#check-info").text("Please accept policy");
    valid = false;

  
  //alert(valid);
  return valid;
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<form onsubmit="return validateContact();" action="#" method="POST">
  <span id="check-info"></span>
  <h5><input class="t-contact-form__field u-mt-2" name="check" type="checkbox" id="check">I know the policy and accept.</h5>
  <button type="submit">Submit</button>
</form>
检查答案here 以设置样式复选框。

【讨论】:

以上是关于输入字段表单验证 - 复选框的主要内容,如果未能解决你的问题,请参考以下文章

表单中的复选框验证

如果选中某些复选框,则 jquery 验证表单输入

如果选中相邻复选框,则输入字段验证

如何在 Angular2 中触发表单验证器

ExtJS 4.2.1 - 表单自定义字段验证

Symfony 表单验证:如果另一个字段不为空,则需要字段