gpt4 book ai didi

javascript - knockout 验证 - isValid() 在值更改后始终为 true

转载 作者:行者123 更新时间:2023-11-28 01:44:44 24 4
gpt4 key购买 nike

我有以下情况:

function ViewModel(){

var self = this;

self.newQty = ko.observable().extend({
pattern: {
message: "Wrong!",
params: new RegExp("^[1-9][0-9]*(\\,\\d{1,2})?|0+\\,\\d{1,2}$")
}
});

self.newQty.subscribe(function() {
if(self.newQty.isValid())
doStuff();
})
}

newQty 字段绑定(bind)到 input 元素。

如果我在 input 框中输入“123”,isValid() 的计算结果为 true,如果我在 input 框中输入“asd” 输入框的isValid()计算结果为false

当我将“123”更改为“123a”时,问题就显现出来了。 isValid() 的计算结果仍然为 true。

我的问题是:有没有办法手动强制重新评估字段newQty?我发现一些帖子建议调用 valueHasMutated(),但在使用它时出现 超出最大调用堆栈大小 错误。

我使用 Knockout 2.3.0 和最新版本的 Knockout-validation 插件。

谢谢!

最佳答案

问题是你没有逃避你的交替(|)。如果添加括号,它应该可以工作:

params: new RegExp("^([1-9][0-9]*(\\,\\d{1,2})?|0+\\,\\d{1,2})$")

您可以在浏览器控制台中测试它:

'1234a'.test(/^[1-9][0-9]*(\\,\\d{1,2})?|0+\\,\\d{1,2}$/) //returns true
'1234a'.test(/^([1-9][0-9]*(\\,\\d{1,2})?|0+\\,\\d{1,2})$/) //returns false

关于javascript - knockout 验证 - isValid() 在值更改后始终为 true,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20473917/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com