挖空验证 - isValid() 在值更改后始终为真
Knockout validation - isValid() always true after value change
我有以下情况:
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
相关文章:
- 正在验证8个真/假复选框或复选框中的2个
- 借助asp.net验证或java脚本对多个文本进行验证
- jQuery自定义验证比较多个输入的序列
- 使用html中的外部javascript进行数据验证
- 如何使用jquery Validation验证Formspread
- jquery中的文本框验证
- 在验证和发送邮件后更改联系人表单的 html
- 代码不会验证
- JS验证ajax返回的html中的表单数据
- 同步调用,直到用户通过angular验证为访问者
- 带有加号的电话号码验证(可选)
- 解析javascript表单验证器
- 两位数的月份日期验证
- 使用angularjs验证文本框中的电子邮件
- 验证Javascript中的Textarea
- 使用regex的jquery keydown绑定不会验证撇号和句点
- 挖空验证 - isValid() 在值更改后始终为真
- 如何在客户端设置自定义验证器isValid属性
- isValid表单验证,然后运行函数AngularJS
- Page.IsValid总是返回false,即使我在java脚本中禁用了验证