【问题标题】:Strange validator behaviour in AngularJS 1.5.11AngularJS 1.5.11 中奇怪的验证器行为
【发布时间】:2018-07-24 10:04:13
【问题描述】:

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

问题在于validateNumber 函数的奇怪行为。对于输入的每个字符,验证似乎在truefalse 之间切换。 validateMinvalidateMax 函数按预期工作。

示例代码可以在这里找到:https://codepen.io/kdbruin/pen/MBmXYz

关于为什么会发生这种情况的任何见解?

【问题讨论】:

    标签: angularjs angularjs-directive angularjs-validation


    【解决方案1】:

    也许这就是罪魁祸首?

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

    MDN

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

    var result = numberRegexp.test(modelValue);
    

    var result = numberRegexp.search(modelValue) !== -1;
    

    【讨论】:

    • 已经找到了答案,似乎是“g”(全局)标志导致了这个问题。但我也会尝试你的建议。
    【解决方案2】:

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

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

    问题消失了。所以看来原来的“g”标志不应该用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-19
      • 1970-01-01
      • 1970-01-01
      • 2020-07-10
      • 2010-12-17
      相关资源
      最近更新 更多