文本输入的更改值未返回

Text input's changed value not returning

当我 运行 我的网络应用程序时,许多文本框都带有它们的初始值。当我更改文本框值并单击按钮时,更改值未反映而是返回旧值。我第一次遇到这个问题。我清除了浏览器缓存,但还是不行。

这样我就可以从文本框中提取值。

alert(tr.find("input[id*='FirstName']").attr('value'));
OR
alert(tr.find("input[id*='FirstName']").val());

只是不明白为什么会这样。最后一天的活动 运行 我的程序成功了,但今天遇到了这个问题。我搜索 google 但没有成功。寻求帮助来修复它。我尝试重现这个问题 in this fiddle 但在这里我没有遇到任何问题。

我的 html 在 td 中的样子如下

<td class="NameColWidth">
    <span class="display-mode">Sandip</span>
    <input type="hidden" id="HiddenFirstName" value="Sandip" name="HiddenFirstName">
    <input type="text" value="Sandip" name="Students[0].FirstName" id="Students_0__FirstName" data-val-required="First Name Required" data-val="true" class="edit-mode" style="display: none;">
    <span data-valmsg-replace="true" data-valmsg-for="Students[0].FirstName" class="field-validation-valid text-danger"></span>
</td>

导致问题的隐藏字段?

隐藏文件导致了问题。当您尝试获取 id 包含 FirstName 的所有输入字段时,也会获取隐藏字段,因为它存在于同一行中并且 id 包含 FirstName。

忽略那个隐藏的文件你可以做

tr.find("input[id*='FirstName']").not("input[type='hidden']")

tr.find("input[id*='FirstName']:not([type=hidden])")

另请注意,如果您的查询结果 returns collection/array 到其他函数,则 jquery 默认情况下仅从该集合中选取第一项并仅更改

编辑 要回答评论中提出的问题,您可以通过

找到文本值

tr.find("input[type='text'][id*='FirstName']").val()

记住,这只会得到第一个文本值,而不是全部。