如果字段由浏览器自动填充,则触发jquery表单验证

Trigger jquery form validation if field is autofilled by browser

本文关键字:jquery 验证 表单 填充 字段 浏览器 如果      更新时间:2023-09-26

我正在使用jquery keyup将正则表达式与用户输入进行匹配,以验证输入是否符合我的要求。

$("input[name=vat]").keyup(function(){
    var vatVal = $(this).val();
    var vatReg = /^[0-9-]{6,}$/;
    if (!vatReg.test(vatVal)) {
        $(this).removeClass("success");
        $(this).addClass("error");
    } else {
        $(this).removeClass("error");
        $(this).addClass("success");
        if (!$("span[name=vaterror]").hasClass("hide")) {
            $("span[name=vaterror]").addClass("hide");
        }
    }
});

但是我遇到了一些浏览器预填充表单字段的问题。像Chrome一样,如果用户设置了浏览器设置,可以为您预先填充某些输入字段。

发生这种情况时,我如何触发验证?

我不认为这是重复的,我把它解释为选择了浏览器建议的选项,而不是页面加载时的实际初始预填充。

我敢肯定,仍然没有办法捕捉到浏览器预填充,因为它发生在document.ready()被触发之前。但你可以利用这一点为自己谋利。

只需触发您在document.ready事件上捕获的事件,用于所有没有默认值的输入字段:

$(document).ready(function(){
  $('input[value!=""]').trigger('keyup');
});

此代码未经过测试,如果在任何监听keyup的处理程序中使用随机键的键盘代码,则可能需要将其添加到事件中。请参阅触发器文档。