我遇到的问题是jQuery抓取的值,以及输入文本字段中的实际值是不同的。
当页面加载来自我们数据库的信息时,将填充具有各种输入的表单。因此,输入文本字段都具有值。
提交表单时,我有一个先运行的函数来检查文本输入。这是该功能的一部分:
$("form#accountSettingsForm input").each(function(){
var input = $(this);
var value = input.attr("value");
}
假设页面最初加载时输入值为12。如果我删除文本框中的12并将该字段留空并提交表单,则上面检索到的代码“value”仍然是12,而不是空的。 如何检测文本框的值是什么?提前谢谢。
答案 0 :(得分:1)
这种情况是value
属性与value
属性之间存在差异。该属性来自HTML,该属性来自DOM的动态。要在用户修改输入后获取输入的当前值,请使用jQuery .val()
方法。
$("#accountSettingsForm").submit(function() {
$(this).find("input").each(function() {
var input = $(this);
var value = input.val();
console.log(this.name + " = " + value);
});
return false;
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<form id="accountSettingsForm">
Input 1:
<input name="field1" type="text">
<br>Input 2:
<input name="field2" type="text">
<br>
<input name="submit" type="submit">
</form>
答案 1 :(得分:1)
以下似乎效果很好。如果您想定期记住/存储该值,请注册on('input')
事件。有了这个,每次用户在文本框中输入时都会收到一个事件:
$("#accountSettingsForm :input").on('input', function() {
console.log($(this).val());
});
据我所知,$(this).val()
访问方法运行正常。
这是一个JSFiddle:https://jsfiddle.net/uz8k7rjp/
我得到此方法的原始帖子:JQuery: detect change in input field