【问题标题】:derequire input types if checkbox is checked如果选中复选框,则不需要输入类型
【发布时间】:2018-01-23 09:52:41
【问题描述】:

我有一个几乎所有输入类型都需要的表单,就像下面的 HTML:

                <p>Name:*</p>
                  <input type="text" name="Name" required>
                <p>Company Name: </p>
                    <input type="text" name="Company_Name">
                <p>Email: *</p>
                    <input type="email" size="30" name="Email" required>
                <p>Phone:*</p>
                    <input type="text" name="Phone" required>

在表格的最后,我有一个复选框,指出,

                    <div class="checkbox">
                       <input type="checkbox"  name="checkbox_name[]" > 
                         <p>I'm Going</p>   
                       <input type="checkbox"  name="checkbox_name[]" >
                         <p>thanks, but I can't go</p>  

                      <input type="checkbox" name="checkbox_name[]" required>                 
                      <p>I have read the above information</p>

当且仅当“谢谢,但我不能去”复选框被标记时,我是否可以“取消要求”上述输入类型?

【问题讨论】:

  • 你在用jquery吗?
  • 这就是我要努力的方向,我只是对 jguery 不太了解。使用类似 .change(function) 的东西在这里有用吗?
  • 仅仅为此使用 jQuery 是没有意义的。您也可以仅使用 javascript 检查:document.getElementById("myCheck").checked = true 并删除如下属性:document.getElementById("Email").required = false
  • 我尝试添加 document.getElementById("Email").required = false 以查看它是否会删除必填字段,但它没有。我正在阅读stackoverflow.com/questions/25628209/…,我尝试了这个但它仍然无法正常工作:函数 check() {document.getElementById("email").required="required";} 和 \
  • 您是否在电子邮件中添加了id&lt;input type="email" id="email" size="30" name="Email" required&gt; document.getElementById("email").required = false 注意:JavaScript 区分大小写,id 应该匹配并且对于所有输入必须是唯一的

标签: html css validation checkbox required


【解决方案1】:

看看这个。它会根据我要去与否的复选框更改 `required 属性。 您可以根据需要对其进行修改。我希望你明白了。

<p>Name:*</p>
<input type="text" name="Name" class="formElem" required>
<p>Company Name: </p>
<input type="text" class="formElem" name="Company_Name">
<p>Email: *</p>
<input type="email" class="formElem" id="email" size="30" name="Email" required>
<p>Phone:*</p>
<input type="text" class="formElem" name="Phone" required>

<div class="checkbox">
  <input id="ckbox" type="checkbox" name="checkbox_name[]" onchange="check()">
  <p>I'm Going</p>
  <input type="checkbox" name="checkbox_name[]">
  <p>thanks, but I can't go</p>

  <input type="checkbox" name="checkbox_name[]" required>
  <p>I have read the above information</p>

  <script>
    function check() {
      var temp = document.getElementsByClassName("formElem");
      if (document.getElementById("ckbox").checked) {            
        for (var e = 0; e < temp.length; e++) { // For each element
          var elt = temp[e];
          elt.required = true;
        }
      } else {
        for (var e = 0; e < temp.length; e++) { // For each element
          var elt = temp[e];
          elt.required = false;
        }
      }
    }
  </script>

【讨论】:

  • 是的,这对那个元素起到了作用。现在,如果我想为表单中的所有元素(例如电话和姓名)提供该功能,我可以只获取 div 的 id 吗?例如:

    姓名:*

    公司名称:

    电子邮件:*

    电话:*

  • 检查我编辑的答案。您对多个元素应用相同的规则,您也可以使用class 而不是使用id
  • 是的,这也成功了!在这里学到了很多关于 JS 的知识,谢谢你的帮助!
猜你喜欢
  • 2013-12-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-02
  • 1970-01-01
  • 2011-09-28
  • 2017-01-08
  • 1970-01-01
相关资源
最近更新 更多