javascript - 如何使用 JavaScript 验证一种表单中的两组单选按钮?

标签 javascript forms validation radio-button

我在一种形式中有两组单选按钮。如果您没有选中每组一个单选按钮,则您不应该能够发送该表单。如果可能的话,我想要一个仅包含 JS 的解决方案(没有 jQuery)。我在这里的一个旧问题中发现了一个有用的功能,并尝试将其适应我的情况,但我显然失败了。我的错误在哪里?

<form>

<input type="radio" name="date_1" id="dat-1_27-10" value="2017-10-27" <?php echo $checked1 ;?> />
<input type="radio" name="date_1" id="dat-1_28-10" value="2017-10-28" <?php echo $checked2 ;?> />
<input type="radio" name="date_1" id="dat-1_03-11" value="2017-11-03" <?php echo $checked3 ;?> />
<input type="radio" name="date_1" id="dat-1_04-11" value="2017-11-04" <?php echo $checked4 ;?> />

<input type="radio" name="date_2" id="dat-2_27-10" value="2017-10-27" <?php echo $checked5 ;?> />
<input type="radio" name="date_2" id="dat-2_28-10" value="2017-10-28" <?php echo $checked6 ;?> />
<input type="radio" name="date_2" id="dat-2_03-11" value="2017-11-03" <?php echo $checked7 ;?> />
<input type="radio" name="date_2" id="dat-2_04-11" value="2017-11-04" <?php echo $checked8 ;?> />

<input type="submit" name="send" value="send" id="submit" onclick='return validateDateOne(); return validateDateTwo();'/>

</form>

<script>

function validateDateOne() {
      if (!$("input[name='date_1']:checked").val()) {
          alert('Please choose your favourite date');
          return false;
      }
      else {}
}

function validateDateTwo() {
      if (!$("input[name='date_2']:checked").val()) {
           alert('Please choose a second date');
           return false;
      }
      else {}
}

</script>

最佳答案

在函数 validateDateOne() 的 else 条件内使用 retrun 语句调用函数 validateDateTwo(),而不是在 onclick 中调用它。

对于纯JS解决方案,我使用querySelector而不是$

function validateDateOne() {
      if (!document.body.querySelector("input[name='date_1']:checked")) {
          alert('Please choose your favourite date');
          return false;
      }
      else {
         return validateDateTwo();
      }
}

function validateDateTwo() {
      if (!document.body.querySelector("input[name='date_2']:checked")) {
           alert('Please choose a second date');
           return false;
      }
      else {}
}
<form>

<input type="radio" name="date_1" id="dat-1_27-10" value="2017-10-27"  />2017-10-27
<input type="radio" name="date_1" id="dat-1_28-10" value="2017-10-28"  />2017-10-28
<input type="radio" name="date_1" id="dat-1_03-11" value="2017-10-28"  />2017-10-28
<input type="radio" name="date_1" id="dat-1_04-11" value="2017-11-04"  />2017-11-04
<br/>
<input type="radio" name="date_2" id="dat-2_27-10" value="2017-10-27"  />2017-10-27
<input type="radio" name="date_2" id="dat-2_28-10" value="2017-10-28"  />2017-10-28
<input type="radio" name="date_2" id="dat-2_03-11" value="2017-11-03"  />2017-10-28
<input type="radio" name="date_2" id="dat-2_04-11" value="2017-11-04"  />2017-11-04

<input type="submit" name="send" value="send" id="submit" onclick='return validateDateOne();'/>

</form>

关于javascript - 如何使用 JavaScript 验证一种表单中的两组单选按钮?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44323808/

相关文章:

javascript - 停止将 HTML href 连接到地址栏

javascript - 一个简单的 WebdriverIO - Mocha 测试不显示浏览器

html - 在基于十进制的输入字段上设置小于数字的最大值

c# - 如何防止用户注册表中出现重复的电子邮件地址?

键/值对的 JavaScript 数组使用文字变量名称作为键

javascript - 我有 8 个单行数组,如何将它们组合成一个 8 行的数组?

javascript - 如何使用 CasperJS 成功提交 .Net 表单

javascript - 使用 Javascript 验证联系我们表单,下拉菜单不返回 false

javascript - 是否可以确保不编辑隐藏的表单元素?

html - 如何发送隐藏数据