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

如何从可克隆表单的按钮所在父表单中获取字段值?

解决可克隆表单中获取字段值的问题

你遇到的核心问题是混淆了原生DOM元素和jQuery对象的用法,同时存在选择器使用错误。下面直接给你正确写法,顺便解释之前的错误:

错误原因分析

  • 用$(this).closest("form")[0]得到的是原生DOM表单元素,它没有jQuery的find()方法,必须用$(原生元素)转成jQuery对象才能调用jQuery方法。
  • children()只能查找当前元素的直接子元素,而Model字段嵌套在fieldset > ul > li里,不是表单的直接子元素,所以用children()找不到。
  • 选择器写法错误,比如"Model"不是有效的选择器,要写成input[name="Model"]或者#Model(该字段有ID,用ID选择器更高效)。

正确写法示例

方法1:单独获取Model字段的值

直接通过表单上下文查找目标字段:

$(".send").on("click", function(e){
    e.preventDefault();
    alert("Save Button Clicked");
    
    // 获取当前按钮所在的表单(jQuery对象,不要加[0])
    var $theForm = $(this).closest("form");
    
    // 查找Model字段并获取值
    var modelValue = $theForm.find('input[name="Model"]').val();
    // 或者用ID选择器:$theForm.find('#Model').val();
    
    alert("Model值:" + modelValue);
});

方法2:一次性获取所有表单字段的键值对

如果需要获取表单里所有字段(包括隐藏字段)的值,用serializeArray()更方便,适合多字段场景:

$(".send").on("click", function(e){
    e.preventDefault();
    alert("Save Button Clicked");
    
    var $theForm = $(this).closest("form");
    // 把表单序列化成数组,每个元素包含name和value
    var formDataArray = $theForm.serializeArray();
    
    // 转成便于访问的对象
    var formData = {};
    formDataArray.forEach(function(item) {
        formData[item.name] = item.value;
    });
    
    // 可以直接访问任意字段
    alert("IDNum: " + formData.IDNum + "\nYear: " + formData.Year + "\nModel: " + formData.Model);
});

修正你之前的错误写法

比如你之前的这行错误代码:

// var Model = $(this).closest("form")[0].find('input[name="Model"]').val();

可以改成两种正确形式:

  1. 去掉[0],保持jQuery对象:$(this).closest("form").find('input[name="Model"]').val();
  2. 把原生元素转成jQuery对象:$($(this).closest("form")[0]).find('input[name="Model"]').val();

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 01:32:02