Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Chrome自动填充值无法在jQuery中反映_Javascript_Jquery_Html_Google Chrome_Autofill - Fatal编程技术网

Javascript Chrome自动填充值无法在jQuery中反映

Javascript Chrome自动填充值无法在jQuery中反映,javascript,jquery,html,google-chrome,autofill,Javascript,Jquery,Html,Google Chrome,Autofill,我有以下非常简单的表格: <form action="goto.html" method="post" validate> <input type="text" name="username" required> <br/> <input type="password" name="password" required> <br/>

我有以下非常简单的表格:

<form action="goto.html" method="post" validate>
            <input type="text" name="username"  required>
            <br/>
            <input type="password" name="password" required>
            <br/>
            <button type="submit">submit</button>
 </form>  
我没有任何价值,甚至尝试了以下方法:

setInterval( function(){
        console.log('value is ::-')      
        console.log($('[name="username"]').val())      
    }, 500 );
除非您在浏览器内单击,否则该值将不会显示,单击后将在控制台中输出正确的值

即使我人工触发了这样的点击:

setTimeout( function() {
        $('body')
            .trigger('click');
    } , 3000 );
setInterval仍将记录空白,除非我实际在浏览器中单击


有解决办法吗?发现了一个类似的问题,但所提到的解决方案不起作用。

存在一个我不久前发现的黑客解决方案,但我不记得在哪里。 这是因为Javascript能够在Chrome中跟踪自动填充CSS动画

CSS部分:

@keyframes onAutoFillStart {  from {/**/}  to {/**/}}
@keyframes onAutoFillCancel {  from {/**/}  to {/**/}}

.my-input:-webkit-autofill {
    animation-name: onAutoFillStart;
    /* VERY slow dummy animation --> */
    transition: background-color 50000s ease-in-out 0s;
}
.my-input:not(:-webkit-autofill) {
    animation-name: onAutoFillCancel;
}
Javascript/JQuery部分:

$(document).on('animationstart', '.my-input', function(event) {
    var input = $(event.target).closest('.my-input');
    switch(event.originalEvent.animationName) {
        case 'onAutoFillStart':
            console.log(input.val());
            // ... do some other stuff
            break;   
        case 'onAutoFillCancel':
            if(input.val() == '') {
                console.log(input.val());
                // ... do some other stuff
            }
    }
});

[编辑]我在这里找到了原始源代码

使用
val()
而不是
text()
。不清楚为什么会在Chrome中出现这种情况,很可能是因为
text()
并不是从get Go中提取输入字段值的标准方法。为什么要使用.text(),try.val()
。text()
返回元素之间的文本值。而不是输入字段的值。我真的很惊讶,它在点击..@AbanaClara后返回了您期望的结果,这不是bug
text()
val()
完全不同。而且,如果我没有弄错的话,Chrome实际上不会在页面加载时填充它们。它只向用户“显示”值,并等待用户交互以确认是否填写这些值。至少当一个站点需要我的地址数据时,它对我来说就是这样。我很好奇这是否解决了这个问题。如果是的话,干得好@Benni,如果在单击处理程序中我添加了一个警报(),我得到的是警报,但不是
.val()
,它仍然是空的!一些非常奇怪的行为
$(document).on('animationstart', '.my-input', function(event) {
    var input = $(event.target).closest('.my-input');
    switch(event.originalEvent.animationName) {
        case 'onAutoFillStart':
            console.log(input.val());
            // ... do some other stuff
            break;   
        case 'onAutoFillCancel':
            if(input.val() == '') {
                console.log(input.val());
                // ... do some other stuff
            }
    }
});