如何禁用jQuery表的搜索栏中的Chrome自动完成功能

时间:2019-02-28 11:38:40

标签: html google-chrome autocomplete

最近我注意到,当我们构建jquery表时,谷歌浏览器开始自动完成动态生成的所有搜索栏。所有这些字段都不是表单的一部分,但是Google决定在其中建议登录值。我已经尝试解决初始化回调并使用autocomplete属性,但是以下解决方案都无法解决问题。我在Firefox / Safari中没有遇到过同样的问题。在理解问题上的任何帮助将不胜感激。

autocomplete="off"
autocomplete="false"
autocomplete="autocompleterandom"

这是我们初始化表的方式

newTable$.DataTable({
    paging: true,
    pageLength: 20,
    lengthMenu: [15, 30, 60, 80],
    search: {
        search: _this.searchValues[newTable$.data('type')]
    },
    initComplete: function() {
        $('.section input[type="search"]').prop('name', 'autocompleterandom');
        $('.section input[type="search"]').prop('autocomplete', 'autocompleterandom');
    }
});

这是生成的搜索栏的外观

<div id="DataTables_Table_1_filter" class="dataTables_filter"> . 
    <label>Search:
        <input type="search" class="" placeholder="" aria-controls="DataTables_Table_1" 
               name="autocompleterandom" autocomplete="autocompleterandom"> 
    </label>
</div>

经过几个小时的研究,似乎是chrome的“功能”,现在chrome会建议在整个应用程序中保存密码:(

https://bugs.chromium.org/p/chromium/issues/detail?id=587466

3 个答案:

答案 0 :(得分:1)

我遇到了同样的问题,解决方案将这两行放在了一起:

$(document).ready(function(){
  $("input[type='search']").wrap("<form>");
  $("input[type='search']").closest("form").attr("autocomplete","off");
});

答案 1 :(得分:0)

这很好:

initComplete: function() {
                $(this.api().table().container()).find('input').parent().wrap('<form>').parent().attr('autocomplete', 'off');
            }

答案 2 :(得分:-1)

还有另一种选择。基本上,您需要等待Chrome进行自动完成,然后将输入的搜索值设置为'' 250 可以更改。您可以像这样在Datatable初始化中添加其他设置:

initComplete: function() {
    setTimeout(() => {
        $('input[type="search"]').val('');
    }, 250)
},