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

如何实现表格中行内复选框勾选时对应输入框设为必填项

解决勾选复选框时动态设置输入框必填的问题

我来帮你搞定这个需求!咱们一步步来完善代码,实现勾选复选框时动态设置对应输入框为必填项的功能:

第一步:修改HTML中的点击事件

首先要给makerequired函数传递当前触发事件的复选框元素,这样函数才能知道是哪一行的复选框被操作了。把每个checkbox的onclick属性改成makerequired(this):

<table>
  <tr>
    <td>S.no.</td>
    <td>Required Capacity</td>
    <td>Action</td>
  </tr>
  <tr>
    <td>1</td>
    <td><input type="text" id="src2"/></td>
    <td><input type="checkbox" onclick="makerequired(this)"></td>
  </tr>
  <tr>
    <td>2</td>
    <td><input type="text" id="src3"/></td>
    <td><input type="checkbox" onclick="makerequired(this)"></td>
  </tr>
  <tr>
    <td>3</td>
    <td><input type="text" id="src4"/></td> <!-- 原代码id重复,建议改成唯一值 -->
    <td><input type="checkbox" onclick="makerequired(this)"></td>
  </tr>
</table>

第二步:完善makerequired函数

接下来在JavaScript里实现核心逻辑:通过传入的复选框元素找到它所在的行,再定位到该行的文本输入框,最后根据复选框的勾选状态设置required属性:

function makerequired(checkbox) {
  // 找到当前复选框所在的表格行
  const row = checkbox.closest('tr');
  // 找到该行中的文本输入框
  const input = row.querySelector('input[type="text"]');
  
  // 根据复选框的勾选状态设置required属性
  if (input) {
    input.required = checkbox.checked;
  }
}

逻辑说明

  • checkbox.closest('tr'):向上查找最近的<tr>元素,精准定位当前复选框所在的行。
  • row.querySelector('input[type="text"]'):在当前行内筛选出文本类型的输入框。
  • input.required = checkbox.checked:直接将复选框的勾选状态映射给输入框的必填属性——勾选时输入框变为必填,取消勾选时自动移除必填限制。

另外提个小建议:原代码里有两个输入框的id都是src3,这不符合HTML规范(id必须全局唯一),建议改成src2、src3、src4这类唯一值,避免后续出现潜在问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 09:02:46