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

时间:2014-09-30 08:25:34

标签: javascript 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可以为您预先填写某些输入字段。

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

1 个答案:

答案 0 :(得分:2)

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

我很确定在document.ready()被触发之前,仍然无法捕获浏览器预填充。但是你可以利用这个优势。

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

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

此代码未经过测试,如果您在侦听密钥的任何处理程序中使用随机密钥,则可能必须将随机密钥的键盘代码添加到事件中。请参阅trigger documentation