如何在jQuery DataTable的搜索框中禁用Chrome自动完成

x0fgdtte  于 2023-03-06  发布在  Go
关注(0)|答案(3)|浏览(116)

最近我注意到google chrome开始自动完成所有在我们构建jquery table时动态生成的搜索栏,所有这些字段都不是表单的一部分,但谷歌决定建议在他们的登录值。我已经尝试解决初始化回调和发挥与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

oxalkeyp

oxalkeyp1#

我遇到了同样的问题,解决方案是把这两行:

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

ulmd4ohb2#

这样做效果很好:

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

bvhaajcl3#

我尝试了所有的解决方案,但没有人与我合作,这是我如何管理这个问题:

preDrawCallback: function() {
                let el = $('div.dataTables_filter label');
                if(!el.parent('form').length) {
                    el.wrapAll('<form></form>').parent()
                    .attr('autocomplete', false)
                    .attr('autofill', false);
                }
            }

我使用了preDrawCallback而不是initComplete回调,但是由于preDrawCallback是在每个raw上触发的,因此我添加了if语句以避免form标记的多重 Package 。
问候;

相关问题