Я в настоящее время борюсь с действительно очень странной проблемой.
Я настроил небольшой тестовый пример: http://jsfiddle.net/U3jwx/2/
Просто нажмите на поле, а затем за его пределы - несколько раз!
Как это может быть?Значение даже не меняется!Я полагаю, это как-то связано с функцией проверки ...
сбрасывает 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); };