2014-09-30 94 views
0

如果输入与我想要的匹配,我正在使用键值匹配正则表达式,再次将用户输入与匹配。如果字段由浏览器自动填充,触发jquery表单验证

$("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一样,如果用户已经设置了浏览器设置,可以为您预先填写某些输入字段。

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

+0

[Fire JQuery文本在选择预填充值时发生更改]的可能重复(http://stackoverflow.com/questions/24198042/fire-jquery-text-change-when-selecting-prefilled-value) – 2014-09-30 08:32:16

+0

不幸的不是。因为输入字段永远不会被“触及”。这将相当于焦点法。 – madsobel 2014-09-30 08:37:31

回答

2

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

我非常确定,在触发document.ready()之前,仍然无法捕获浏览器预填。但你可以使用它来获得优势。

只需触发您是在事件的document.ready捕不具有默认值的情况下,对所有输入字段:

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

此代码没有经过测试,你可能需要添加键盘代码的事件的随机密钥,如果您在任何处理程序中使用它们来监听密钥。请参阅trigger documentation

+0

谢谢。这使我指出了正确的方向。这适合现在的目的。 http://jsfiddle.net/cmrfyq48/ – madsobel 2014-09-30 11:27:16

+0

这也行得通,但确保在完成验证后确保清除间隔。 – 2014-09-30 11:45:28