You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何阻止成对输入仅填一项时的表单提交?支持多组输入

实现输入框对的联动校验(支持多组)

核心校验规则

两个输入框需满足:要么同时为空,要么同时填写内容,若仅填写其中一个,则阻止表单提交。


单组输入框的实现

基于你提供的HTML结构,通过监听提交事件完成校验:

HTML 代码

<input name="cas[]" id="ca">
<input name="exams[]" id="exam">

<button type="submit" id="submit">Submit</button>

JavaScript 代码

document.getElementById('submit').addEventListener('click', function(e) {
  // 获取输入值并去除首尾空格
  const caValue = document.getElementById('ca').value.trim();
  const examValue = document.getElementById('exam').value.trim();

  // 校验:一个有值另一个为空时阻止提交
  if ((caValue && !examValue) || (!caValue && examValue)) {
    e.preventDefault();
    alert('请同时填写两个输入框,或都不填写');
  }
});

多组输入框的实现

给每组输入框添加统一容器,方便批量遍历校验:

HTML 代码

<!-- 第一组 -->
<div class="input-pair">
  <input name="cas[]" class="ca-input">
  <input name="exams[]" class="exam-input">
</div>

<!-- 第二组 -->
<div class="input-pair">
  <input name="cas[]" class="ca-input">
  <input name="exams[]" class="exam-input">
</div>

<button type="submit" id="submit">Submit</button>

JavaScript 代码

document.getElementById('submit').addEventListener('click', function(e) {
  let isValid = true;
  const inputPairs = document.querySelectorAll('.input-pair');

  // 遍历每组输入框校验
  inputPairs.forEach(pair => {
    const caValue = pair.querySelector('.ca-input').value.trim();
    const examValue = pair.querySelector('.exam-input').value.trim();

    if ((caValue && !examValue) || (!caValue && examValue)) {
      isValid = false;
      alert('存在未完整填写的输入组,请检查');
      pair.querySelector('.ca-input').focus(); // 定位到问题输入框
    }
  });

  if (!isValid) e.preventDefault();
});

关键细节

  • 用trim()处理输入值,避免空格被误判为有效内容
  • 多组校验时通过容器批量获取输入对,确保每组都符合规则
  • 校验失败时聚焦问题输入框,提升用户修改效率

内容的提问来源于stack exchange,提问作者Innovin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 17:55:19