Javascript 关于模糊事件问题的表单字段(真奇怪!)

Javascript 关于模糊事件问题的表单字段(真奇怪!),javascript,events,onblur,Javascript,Events,Onblur,我目前正与一个非常奇怪的问题作斗争 我有一个电话号码表字段 有一个函数可以激发onblur并验证值是否有效 每隔一次我做一次模糊,它会验证为false,即使值是正确的,并且值没有更改 我已经设置了一个小测试用例: 只需点击进入该字段,然后再点击外部-多次 这怎么可能?该值甚至不会改变! 我想这与验证函数有关…在调用之间将正则表达式的lastIndex重置为0 var validatePhoneNumber = function(val) { var re =

我目前正与一个非常奇怪的问题作斗争

  • 我有一个电话号码表字段
  • 有一个函数可以激发onblur并验证值是否有效
  • 每隔一次我做一次模糊,它会验证为false,即使值是正确的,并且值没有更改
我已经设置了一个小测试用例:

只需点击进入该字段,然后再点击外部-多次

这怎么可能?该值甚至不会改变!
我想这与验证函数有关…

在调用之间将正则表达式的lastIndex重置为0

var validatePhoneNumber = function(val) {        
        var re = /^\+([0-9]{1,3})([\-\s]{0,1})([0-9]{2,6})([\-\s]{0,1})([0-9\-\s]{0,})$/gi;
        re.lastIndex = 0;
        return re.test(val);
};

我试了很多次,结果总是正确的。在这里使用Chrome。不知道你是否改变了它,但它在Chrome和FF-和IE中对我很好!嗯,这似乎是Firefox唯一的问题!FF3.6.13 UNUNUNTUTHE正则表达式刚刚构建,这应该不是问题。太好了!现在作为expexted工作。直到现在我还不知道那房子。我还认为这不会是一个问题,因为每次都会重建正则表达式。但事实并非如此:-)也许某些FF版本正在以某种方式缓存RegExp?这是一个bug吗?@Alex:或者,最好(IMHO)去掉
g
标志。