我因此已经在桌子上撞了一段时间的头。我们有表单来输入仪器测试数据,其中有一个名为“测试卡号”的字段,以及“试剂盒(有效期)”字段。你猜Chrome认为这些字段是用来做什么的?
不用说,当他们输入临床研究数据时,我非常确定用户会非常生气看到chrome 我们试图提取他们的信用卡信息。
即使autocomplete="new-password"和autocomplete="nope"也无法解决问题。
我尝试在没有标签的情况下加载字段,并在JavaScript中动态添加它。但不起作用。使用HTML实体代替字符。还是不行。
好吧,在搜索了几个小时后发现了一个解决办法:在有问题的标签的每个单词中插入几个随机的 - (对于我而言,“测试卡号”中的“卡”和“号”都必须插入)。测试一直保持不变。
可以很容易地编写一个JavaScript扩展/实用程序函数来拆分有问题的标签的HTML,并将该不可见span放在中间(以及一个函数来删除它,以防需要使用标签值)。
类似这样(使用jQuery和旧的js标准,因为我们支持旧浏览器,没有验证标签是否缺失或为空,所以请相应地进行调整。实际上,我相信可以使用正则表达式或其他一些花哨的东西,但我现在没有时间去折腾它):
jQuery.fn.breakAutofill = function () {
var $lbl = $("label[for='" + this[0].id + "']"),
finalText = $lbl.html().split(" "),
foilSpan = "<span style='display:none;'>-</span>";
for (var idx in finalText) {
var textVal = finalText[idx],
midPos = Math.floor(textVal.length / 2);
finalText[idx] = textVal.substr(0, midPos) + foilSpan + textVal.substr(midPos);
}
$lbl.html(finalText.join(" "));
}
然后您可以在文档准备就绪时调用它:
$("your_input_selector").breakAutofill();
希望这对某个人有所帮助。