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

Asp.Net Core MVC6中用jQuery读取动态Div内的Input值

解决Asp.Net Core MVC6 Razor页面动态元素的输入值获取问题

核心问题原因

HTML规范中ID属性必须全局唯一,你当前重复使用SearchSSN和SearchLastName作为ID,导致document.getElementById()只会返回第一个匹配的元素,所以无法获取多个输入框的值。

解决方案

方案1:使用类名+父容器定位(推荐)

修改Razor页面的渲染逻辑,给输入框添加类名,同时保留父Div的唯一ID:

<!-- 动态生成的A1容器 -->
<div id="A1" class="search-box">
    <input type="text" class="search-ssn" placeholder="输入SSN" />
    <input type="text" class="search-lastname" placeholder="输入姓氏" />
    <button onclick="Search('A1')">搜索</button>
</div>

<!-- 动态生成的A2容器 -->
<div id="A2" class="search-box">
    <input type="text" class="search-ssn" placeholder="输入SSN" />
    <input type="text" class="search-lastname" placeholder="输入姓氏" />
    <button onclick="Search('A2')">搜索</button>
</div>

对应的JavaScript函数:

function Search(containerId) {
    // 获取目标容器元素
    const container = document.getElementById(containerId);
    // 在容器范围内查找输入框
    const ssnValue = container.querySelector('.search-ssn').value;
    const lastNameValue = container.querySelector('.search-lastname').value;
    
    // 后续处理逻辑,比如提交搜索请求
    console.log(`容器${containerId}的SSN: ${ssnValue}, 姓氏: ${lastNameValue}`);
}

方案2:生成带前缀的唯一ID

如果必须使用ID定位,可在Razor渲染时将父Div的ID作为输入框ID的前缀,确保全局唯一:

@* 假设动态数据来自模型列表 *@
@foreach (var item in Model.DynamicItems)
{
    <div id="@item.DivId" class="search-box">
        <input type="text" id="@($"{item.DivId}_SearchSSN")" placeholder="输入SSN" />
        <input type="text" id="@($"{item.DivId}_SearchLastName")" placeholder="输入姓氏" />
        <button onclick="Search('@item.DivId')">搜索</button>
    </div>
}

对应的JavaScript函数:

function Search(containerId) {
    const ssnValue = document.getElementById(`${containerId}_SearchSSN`).value;
    const lastNameValue = document.getElementById(`${containerId}_SearchLastName`).value;
    
    console.log(`容器${containerId}的SSN: ${ssnValue}, 姓氏: ${lastNameValue}`);
}

方案3:批量获取所有容器的输入值

如果需要一次性获取所有动态生成容器的输入值(比如页面有统一的"全部搜索"按钮),可遍历所有容器:

function SearchAll() {
    // 获取所有搜索容器
    const allContainers = document.querySelectorAll('.search-box');
    
    allContainers.forEach(container => {
        const containerId = container.id;
        const ssnValue = container.querySelector('.search-ssn').value;
        const lastNameValue = container.querySelector('.search-lastname').value;
        
        console.log(`容器${containerId}的SSN: ${ssnValue}, 姓氏: ${lastNameValue}`);
        // 执行每个容器的搜索逻辑
    });
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 18:27:29