【问题标题】:jQuery, detecting actual input text valuejQuery,检测实际输入文本值
【发布时间】:2016-11-17 21:52:29
【问题描述】:

我遇到了一个问题,即 jQuery 抓取的值与输入文本字段中的实际值不同。

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

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

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

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

【问题讨论】:

  • input.val() 应该做你想做的事。
  • “文字墙”问题往往会被忽略。我建议尝试清楚地说明您的问题,并尽可能多地删除非必要信息。目前还不清楚你在问什么。
  • $(this).val() 工作,见jsfiddle.net/barmar/4t9Lqh53
  • 你能提供你的 HTML 吗?
  • 查看jsfiddle.net/barmar/4t9Lqh53/1 以获取使用.each() 循环获取所有输入的示例。

标签: javascript jquery


【解决方案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

【讨论】:

    【解决方案2】:

    这是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>

    【讨论】:

    • 我知道这很简单。感谢您和其他所有人,特别感谢您澄清属性和属性。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-09
    • 1970-01-01
    • 1970-01-01
    • 2011-08-08
    相关资源
    最近更新 更多