文本输入的更改值未返回
Posted
技术标签:
【中文标题】文本输入的更改值未返回【英文标题】:Text input's changed value not returning 【发布时间】:2016-04-25 06:56:27 【问题描述】:当我运行我的网络应用程序时,许多文本框都带有它们的初始值。当我更改文本框值并单击按钮时,更改值并没有反映出旧值正在返回。我第一次面对这个问题。我清除了浏览器缓存,但仍然没有运气。
这样我从文本框中提取值。
alert(tr.find("input[id*='FirstName']").attr('value'));
OR
alert(tr.find("input[id*='FirstName']").val());
只是不明白为什么会这样。最后一天的事件成功运行了我的程序,但今天面临这个问题。我搜索谷歌,但没有运气。寻求帮助来解决它。我尝试复制问题in this fiddle,但在这里我没有遇到任何问题。
我在 td 中的 html 如下所示
<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>
导致问题的隐藏字段?
【问题讨论】:
可以得到输入$("#HiddenFirstName").val()
的值
我只是删除了隐藏字段,程序开始工作。谁能说出为什么隐藏字段会导致问题?
在 jQuery 对象(代表一组节点,而不仅仅是单个节点)上调用 .val() 将返回单个值。 jQuery 选择集合中的第一个节点进行询问,因此您得到了隐藏输入的值,正如您所料。要么更具体地定位您的元素,要么过滤掉隐藏的输入。
tr.find("input[id*='FirstName']"
将找到完全隐藏的字段并返回其值
如何在此处指定文本以及输入 tr.find("input[id*='FirstName']").val() ?
【参考方案1】:
隐藏文件导致了问题。当您尝试获取 id 包含 FirstName 的所有输入字段时,也会获取隐藏字段,因为它存在于同一行中并且 id 包含 FirstName。
忽略你可以做的隐藏文件
tr.find("input[id*='FirstName']").not("input[type='hidden']")
或
tr.find("input[id*='FirstName']:not([type=hidden])")
另请注意,如果您的查询结果将集合/数组返回给其他函数,则 jquery 默认情况下仅从该集合中选取第一项并仅对其进行更改
编辑 要回答评论中提出的问题,您可以通过
找到文本值tr.find("input[type='text'][id*='FirstName']").val()
记住,这只会得到第一个文本值而不是全部。
【讨论】:
如何在此处指定文本以及输入 tr.find("input[id*='FirstName']").val() ? 我可以写类似 tr.find("input type='text' [id*='FirstName']").val() 的东西吗? 给出只选择输入和输入文本的新代码? tr.find(input[type='text'][id*='FirstName']").val() 你可以这样做。但记住这只会得到第一个元素值 我会尽力让你知道的。以上是关于文本输入的更改值未返回的主要内容,如果未能解决你的问题,请参考以下文章
文本字段更改的值未在 OnSubmit 中更新 - React-Hook-Form 和 React Js