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

选中特定复选框时如何将对应文本框设置为必填项(不可用jQuery)

功能实现方案

1. 调整原有HTML代码

你需要先对现有表单代码做少量调整,给其他技能对应的标签和文本框套上容器,方便统一控制显隐,修改后代码如下:

<form>
  <label>Skills</label>
  <br><br>
  <input type="checkbox" id="skill1" name="skill1" value="Javascript">
  <label for="skill1"> Extensive knowledge of Javascript</label>
  <br><br>
  <input type="checkbox" id="skill2" name="skill2" value="Python">
  <label for="skill2"> Extensive knowledge of Python</label>
  <br><br>
  <input type="checkbox" id="skill3" name="skill3" value="C#">
  <label for="skill3"> Extensive knowledge of Networking</label>
  <br><br>
  <input type="checkbox" id="skill4" name="skill4" value="C#">
  <label for="skill4"> Extensive knowledge of Data storage fundamentals</label>
  <br><br>
  <input type="checkbox" id="skill5" name="skill5" value="C#">
  <label for="skill5"> Extensive knowledge of Security foundations</label>
  <br><br>
  <input type="checkbox" id="skill6" name="skill6" value="C#">
  <label for="skill6"> Extensive knowledge of AWS service selection</label>
  <br><br>
  <input type="checkbox" id="skill7" name="skill7" value="C#">
  <label for="skill7"> Ability to work in a team</label>
  <br><br>
  <input type="checkbox" id="skill8" name="skill8" value="C#">
  <label for="skill8"> 5+ years experience</label>
  <br><br>
  <input type="checkbox" id="skill9" name="skill9" value="C#">
  <label for="skill9"> 10+ years experience</label>
  <br><br>
  <input type="checkbox" id="skill10" name="skill10" value="C#">
  <label for="skill10"> 20+ years experience</label>
  <br><br>
  <input type="checkbox" id="other" name="other" value="other">
  <label for="other"> I have other skills. Please list other skills below.</label>
  <br><br><br>
  <!-- 新增容器包裹文本框和对应标签 -->
  <div id="otherSkillContainer" style="display: none;">
    <label for="subject">Subject:</label>
    <textarea id="otherbox" name="subject" placeholder="textarea" style="height:200px"></textarea>
  </div>
  <input type="submit" value="Apply">
</form>
<!-- 引入外部JS文件,放在body末尾 -->
<script src="form-control.js"></script>

2. 编写外部JS文件

新建名为form-control.js的文件,和HTML放在同一目录下,代码如下:

// 等待DOM完全加载后执行逻辑
document.addEventListener('DOMContentLoaded', function() {
  // 获取需要操作的元素
  const otherCheckbox = document.getElementById('other');
  const otherSkillContainer = document.getElementById('otherSkillContainer');
  const otherTextarea = document.getElementById('otherbox');
  const form = document.querySelector('form');

  // 切换文本框显隐和必填状态的函数
  function toggleOtherSkill() {
    const isChecked = otherCheckbox.checked;
    // 控制显隐
    otherSkillContainer.style.display = isChecked ? 'block' : 'none';
    // 切换必填属性,适配原生表单验证
    otherTextarea.required = isChecked;
    // 未选中时清空文本框内容,避免提交冗余数据
    if (!isChecked) {
      otherTextarea.value = '';
    }
  }

  // 初始化状态
  toggleOtherSkill();

  // 监听复选框变更事件
  otherCheckbox.addEventListener('change', toggleOtherSkill);

  // 表单提交兜底校验,避免绕过原生验证
  form.addEventListener('submit', function(e) {
    if (otherCheckbox.checked && otherTextarea.value.trim() === '') {
      e.preventDefault();
      alert('请填写你的其他技能信息');
      otherTextarea.focus();
    }
  });
});

实现说明

  • 完全使用原生JavaScript实现,无jQuery依赖,无行内JS代码,所有逻辑都在外部JS文件中
  • 默认隐藏其他技能文本框,只有勾选对应复选框时才显示,减少页面冗余信息
  • 同时支持浏览器原生表单验证和自定义提交校验,双重保证必填逻辑生效
  • 未勾选复选框时会自动清空文本框内容,避免提交无效数据

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 22:18:02