如何判断Chrome表单不包含信用卡字段?

时间:2019-03-03 22:03:02

标签: html forms

Chrome太过热心,认为我的HTML表单包含信用卡信息,因此建议用信用卡信息填写。

我可以使用任何属性来告诉Chrome没有这种形式的信用卡信息吗?

要尝试填写信用卡信息的字段名称为:

  • reg_id(在此处输入抄送号码)
  • emergency_first_name(在此处输入名字)
  • emergency_last_name(在此处输入姓氏)

如果不需要,我不想禁用自动完成功能。

这里令人沮丧的是Chrome的“了解更好”的态度,它忽略了autocomplete的任何值,包括off

<input autocomplete="off" value="" size="10" maxlength="10" id="id_reg_id" name="reg_id" type="text">

编辑:更新了以下答案。

3 个答案:

答案 0 :(得分:0)

尝试

输入type =“ custom”

或在单行中使用textarea并调整大小

答案 1 :(得分:0)

您的浏览器默认不会记住您的信用卡号-我只能假设您输入的字段上带有“通用” autocomplete值。您随时可以通过在预填充选项下拉菜单中选择删除(使用箭头键)时,只需点击浏览器中的删除来强制您的浏览器忘记

为防止它出现在某些字段中,这取决于您希望每个字段保存什么信息,但是您可以使用autocomplete个值中的wide array个。您可以使用number作为ID,您提到的其他两个字段实际上带有专用的autocompletegiven-namefamily-name

<input name="reg_id" autocomplete="number" />
<input name="emergency_first_name" autocomplete="given-name" />
<input name="emergency_last_name" autocomplete="family-name" />

如果number不会删减,您还可以使用JavaScript正则表达式进一步限制输入:

const regex = new RegExp("^[a-zA-Z]+$");
const form = document.getElementsByTagName('form')[0];
const reg_id = document.getElementsByTagName('input')[0];

form.addEventListener('click', function(e) {
  e.preventDefault();
  if (regex.test(reg_id)) {
    this.submit();
  }
});
<form>
  <input name="reg_id" autocomplete="number" />
  <input name="emergency_first_name" autocomplete="given-name" />
  <input name="emergency_last_name" autocomplete="family-name" />
</form>

答案 2 :(得分:0)

因此,我一直将头撞在桌子上。我们具有用于输入Instruments测试数据的表格,以及一个名为“测试卡号”以及“试剂盒(有效日期)”的字段。猜猜Chrome浏览器认为这些字段是做什么用的吗?

不用说,我敢肯定,用户会很不高兴看到<击>铬我们的试图拉其CC信息时,他们输入查询临床研究数据

即使在这里, autocomplete =“ new-password” autocomplete =“ nope” 都做不好。

我试图加载没有标签的字段,并在javascript中动态添加它。没有骰子。使用html实体代替字符。不。

好吧,经过数小时的搜索,没有任何解决方案,我发现了一个问题:在有问题的标签的每个字词中随机插入一些。 (对我来说,使用测试卡号必须同时在卡号和卡号中。单独进行测试就可以了。)

一个人可以很容易地编写一个javascript扩展/实用函数,以将不合格标签的html分割并在中间不可见地打巴掌(如果需要使用标签值,可以将其删除)。

这样的事情(使用jQuery和旧的js标准,因为我们支持旧的浏览器,没有验证标签是否丢失或为空,因此请进行相应调整。实际上,我确定可以使用正则表达式或其他一些奇特的东西,但我没有时间来整理一下atm):

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();

我希望能对某人有所帮助。