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

如何使用jQuery获取表格当前行指定列的输入值?现有代码运行异常

问题分析

  • 事件绑定对象错误:你将keyup事件绑定在整个表格#tblEntry上,此时回调函数里的$(this)指向的是表格元素本身,调用closest('tr')自然找不到对应的行,无法获取单元格值
  • 重复声明变量:两次使用var monHrs声明变量,后一次赋值会覆盖前一次的结果
  • 选择器使用不合理:如果后续有新增行的需求,用id选择器会出现id重复冲突,无法正常取值
  • 语法错误:事件回调函数未正确闭合,缺少对应的})符号

修正后的代码

JS代码

<script>
// 事件委托给表格内的.empHrs输入框,后续新增行也能正常触发
$('#tblEntry').on('keyup', '.empHrs', function (e) {
    // 此时$(this)指向触发输入的输入框,可定位到当前所在行
    const currentRow = $(this).closest('tr');
    // 按name属性选择对应列的输入框,避免id冲突问题
    const monHrs = currentRow.find('input[name="MondayNetHrs"]').val();
    const tueHrs = currentRow.find('input[name="TuesdayNetHrs"]').val();
    
    // 此处添加自己的业务逻辑即可,以下是统计周总时长的示例代码
    const weekDays = ['SundayNetHrs', 'MondayNetHrs', 'TuesdayNetHrs', 'WednesdayNetHrs', 'ThursdayNetHrs', 'FridayNetHrs', 'SaturdayNetHrs'];
    let totalHrs = 0;
    weekDays.forEach(day => {
        const dayVal = Number(currentRow.find(`input[name="${day}"]`).val() || 0);
        totalHrs += dayVal;
    });
    currentRow.find('input[name="NetHrsPerWeek"]').val(totalHrs);
})
</script>

HTML代码

无需改动,保持原有代码即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 00:30:01