【问题标题】:Getting the value of autofilled inputs - Jquery获取自动填充输入的值 - Jquery
【发布时间】:2016-03-10 00:19:40
【问题描述】:

因此,由于某些浏览器会自动填写登录表单,这会导致我的交互式占位符出现问题。占位符是一个<span> 元素,其中包含一些文本,当聚焦时它会移动到输入本身的上方。在浏览器插入它“记住”的数据后,我如何能够检测到它的存在以及它的价值?

请注意,这是我希望抓取的输入的自动完成值。

【问题讨论】:

    标签: javascript jquery html google-chrome autofill


    【解决方案1】:

    使用下面的代码,我已经成功实现了我想要的结果:

    setTimeout(function() {
        console.log($('#input').val());
    });
    

    使用超时允许浏览器在代码向其请求数据之前加载自身。

    【讨论】:

    • 很高兴您解决了它。操作的时间/顺序似乎是当时的问题。
    • 不错的方法,但为了适用于我的情况,我必须指定时间......只需添加 50 或 100 毫秒: setTimeout(function() { console.log($('#输入').val()); },100);
    • setTimeOut() 对我不起作用。我尝试了最多 3 秒的延迟。
    • 在 Chrome 中,只有在用户出于某种原因在页面上进行交互后,JavaScript 才能访问自动填充的值。这就是为什么我使用$('body').click(); 使值“真实”,否则你会收到一个空字符串。由于这对于密码字段不起作用,因此我使用autocomplete="new-password" 作为密码字段,因此用户必须填写新密码。
    【解决方案2】:

    给 span 一个 ID 并在其上运行 text() 方法。在没有任何参数的情况下,它作为一个 getter 工作。

    var yourtext = $('#somespan').text();
    

    如果它是一个实际的文本字段而不是一个跨度,您将使用 .val() 方法获取内容。

    var yourtext = $( "#foo" ).val();
    

    【讨论】:

    • 我如何找到输入的值?
    • 在发帖之前我已经尝试过了。您为输入提供的答案似乎不适用于自动完成的值,它只是返回一个空值。
    • 运行上面适用的方法,它会得到文本。一旦将文本设置为“yourtext”变量,您就可以访问该文本,例如: $( "#someothertextfield" ).val(yourtext);
    • <input> 元素没有 .text() 响应,因为它是值。如前所述,使用.val() 方法不会返回任何内容,这是由于浏览器将值插入到字段中。
    • 考虑操作顺序。自动填充的字段是在 DOM 加载时填充的,还是在执行某些其他操作后填充的。如果您尝试在填充之前访问文本,那么您将返回一个空变量。
    猜你喜欢
    • 2020-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-03
    • 1970-01-01
    • 2021-11-10
    • 2016-05-24
    • 1970-01-01
    相关资源
    最近更新 更多