Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
AngularJS 1.5.11中奇怪的验证器行为_Angularjs_Angularjs Directive_Angularjs Validation - Fatal编程技术网

AngularJS 1.5.11中奇怪的验证器行为

AngularJS 1.5.11中奇怪的验证器行为,angularjs,angularjs-directive,angularjs-validation,Angularjs,Angularjs Directive,Angularjs Validation,我们的应用程序仍在使用AngularJS 1.5.11,但我已经用版本1.7.2测试了包含的示例,得到了相同的结果 问题在于validateNumber函数的奇怪行为。对于键入的每个字符,验证似乎在true和false之间切换。validateMin和validateMax功能按预期工作 示例代码可在此处找到: 关于为什么会发生这种情况有什么见解吗?也许这就是罪魁祸首 在同一全局正则表达式实例上多次调用的test()将超过上一个匹配项 最简单的解决方法可能是改变 var result = nu

我们的应用程序仍在使用AngularJS 1.5.11,但我已经用版本1.7.2测试了包含的示例,得到了相同的结果

问题在于
validateNumber
函数的奇怪行为。对于键入的每个字符,验证似乎在
true
false
之间切换。
validateMin
validateMax
功能按预期工作

示例代码可在此处找到:


关于为什么会发生这种情况有什么见解吗?

也许这就是罪魁祸首

在同一全局正则表达式实例上多次调用的
test()
将超过上一个匹配项

最简单的解决方法可能是改变

var result = numberRegexp.test(modelValue);


这里的正则表达式似乎有问题。使用时

var numberRegexp = new RegExp("^[-+]?\\d+(" + (decimalSeparator === "." ? "\\." : decimalSeparator) + "\\d*)?$", "i");

问题消失了。因此,似乎不应该使用原始的“g”标志。

已经找到了答案,而且似乎是“g”(全局)标志导致了这一问题。但我也会试试你的建议。
var numberRegexp = new RegExp("^[-+]?\\d+(" + (decimalSeparator === "." ? "\\." : decimalSeparator) + "\\d*)?$", "i");