jQuery,检测实际输入文本值

时间:2016-07-14 20:06:19

标签: javascript jquery

我遇到的问题是jQuery抓取的值,以及输入文本字段中的实际值是不同的。

当页面加载来自我们数据库的信息时,将填充具有各种输入的表单。因此,输入文本字段都具有值。

提交表单时,我有一个先运行的函数来检查文本输入。这是该功能的一部分:

$("form#accountSettingsForm input").each(function(){
var input = $(this);
var value = input.attr("value");
}

假设页面最初加载时输入值为12。如果我删除文本框中的12并将该字段留空并提交表单,则上面检索到的代码“value”仍然是12,而不是空的。 如何检测文本框的值是什么?提前谢谢。

2 个答案:

答案 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