我有以下情况:
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
字段绑定到input
元素。
如果我在input
框中输入"123",isValid()
的计算结果为 true
,如果我在input
框中键入"asd",则isValid()
的计算结果为 false
。
当我将"123"更改为"123a"时,问题就会显现出来。 isValid()
的计算结果仍为 true。
我的问题是:有没有办法手动重新评估现场newQty
?我找到了一些最讨厌打电话valueHasMutated()
的帖子,但是当我使用它时Maximum call stack size exceeded
我得到了错误。
我使用挖空 2.3.0 和最新版本的挖空验证插件。
谢谢!
问题是你没有逃脱你的交替(|
(。 如果添加括号,它应该可以工作:
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