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

HTML嵌套输入框值获取失败:DOM遍历问题求助

解决嵌套输入框的值获取问题

我看了你的代码,发现几个关键问题导致你没法正确获取输入框的值,咱们一步步来修复:

1. 箭头函数导致this指向错误

你用箭头函数绑定点击事件,箭头函数的this不会指向触发点击的按钮,而是继承外部作用域的this,所以$(this)根本不是你要的按钮元素,这是核心问题之一。改成普通函数就能让this指向点击的.addTrainee按钮。

2. closest()方法使用错误

closest()是向上遍历DOM树找最近的祖先元素,但你要找的.gender、.age这些输入框是按钮的兄弟元素的子节点,不是按钮的祖先。正确的做法是先通过按钮找到最外层的表单容器(比如.add_trainee或者<form>),再用find()去定位对应的输入框。

3. 未阻止表单默认提交行为

点击submit按钮会触发表单的默认提交动作,页面会刷新,这会导致你的AJAX请求还没完成就被中断,必须用event.preventDefault()阻止这个默认行为。

4. 冗余的选择器简化

比如你写的addBtn.closest('.add_trainee').find('.inp').find('input.fullName'),可以直接简化成addBtn.closest('.add_trainee').find('input.fullName'),不需要嵌套多层find()。


修正后的完整代码:

handleAddTrainee() {
  let addBtn = $('.addTrainee');
  
  // 改用普通函数绑定事件,确保this指向按钮
  addBtn.on('click', function(event) {
    // 阻止表单默认提交
    event.preventDefault();
    
    // 先获取表单容器,再找对应的输入框
    const $container = $(this).closest('.add_trainee');
    let fullName = $container.find('input.fullName').val();
    let gender = $container.find('input.gender').val();
    let age = $container.find('input.age').val();
    let phoneNumber = $container.find('input.phoneNumber').val();
    let adress = $container.find('input.adress').val();
    let dateMedicalAssuranceEnd = $container.find('input.dateMedicalAssuranceEnd').val();
    let dateMembershipStart = $container.find('input.dateMembershipStart').val();
    let dateMembershipEnd = $container.find('input.dateMembershipEnd').val();
    
    let traineeForm = {
      fullName: fullName,
      gender: gender,
      age: age,
      phoneNumber: phoneNumber,
      adress: adress,
      dateMedicalAssuranceEnd: dateMedicalAssuranceEnd,
      dateMembershipStart: dateMembershipStart,
      dateMembershipEnd: dateMembershipEnd // 补上你之前遗漏的字段
    };
    
    this.gymRepo.addTrainee(traineeForm).then(() => {
      alert("new trainee as been saved");
    });
  });
}

另外提个小细节:你的HTML里输入框的spaceholder应该是placeholder,拼写错误虽然不影响功能,但修正后能让提示文案正常显示,提升用户体验。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 04:07:19