我查看number posts所有指向使用自动完成属性的不同方式,但我还没有在我的所有浏览器中使用此功能。我见过一些非常丑陋的解决方法,例如this,但我正在寻找一些干净简单的东西。
在所有(或至少,大多数)常见浏览器上禁用文本字段自动填充的好方法是什么?
答案 0 :(得分:1)
为了使那些遵守规则的守法浏览器始终在表单和输入字段上启用“自动完成”(具有“ off”值),这始终是一个好的开始-也有可能发生的情况是“另一天” “浏览器...可能会感觉合规性不是很好。
直到这一天,都需要黑客入侵。我注意到,Chrome至少在三个位置寻找匹配数据:标签(上下文),名称和占位符。如果输入字段中缺少“名称”字段,它将同时在“标签”和占位符中查找,但是如果“名称”字段存在,则将仅在“名称”和“占位符”中查找。
此脚本在必须防止自动完成的输入字段上利用Bootstrap中的“ form-control”类。使用其他任何您喜欢的类或过滤器。还要假设使用了占位符-如果没有,请删除该部分。
$(document).ready(function() {
// Begin
var this_obj = null, this_placeholder = null, this_name = null;
$(".form-control").focus(function() {
this_obj = this;
this_name = $(this).prop("name");
this_placeholder = $(this).attr("placeholder");
$(this).prop("name", "NaN" + Math.random());
$(this).attr("placeholder", "...");
}).blur(function() {
$(this_obj).prop("name", this_name);
$(This_obj).attr("placeholder", this_placeholder);
});
// End
});
注意:将占位符留空实际上可能无意间触发了自动完成功能,因为显然忽略了空分配。
可以避免通过this_obj访问这两个变量this_name和this_placeholder,但是为了便于阅读和清楚起见,我希望保留它们。
该脚本是erm ..挺不引人注目的,因为它会自行清理,并且只需要一个匹配的类或属性。
它可以在68.0.3440.106版本(官方版本)(64位),IE11 11.228.17134.0和Firefox 61.0.2(64位)中运行。抱歉,尚未测试其他人。
答案 1 :(得分:0)
为所有输入标记添加一个类,假设no-complete
在你的js文件中添加以下代码:
setTimeout(function (){
$('.no-complete').val ("");
},1);
答案 2 :(得分:0)
以下代码将禁用FF,IE和Chrome中的自动填充功能。
<script>
$(document).ready(function () {
// IE & FF
$('input').attr('autocomplete', 'off');
// Chrome
if ( $.browser.webkit ) {
$('input').attr('autocomplete', 'new-password');
}});
</script>