看来 KO 验证插件将 HTML5 数字输入属性(例如,最小值、最大值)解析为字符串,而不是数字。这会导致数字输入在具有最小/最大属性时被错误地确定为无效。请参阅:http://jsfiddle.net/hTvsj/ .
HTML:
<label>Some number, valid between 0 and 10</label>
<input type="number" required min="0" max="10" data-bind="value: someNum"/>
JS:
function vm(){
self=this;
self.someNum=ko.observable("5");
}
ko.validation.configure({
parseInputAttributes: true,
});
ko.applyBindings(ko.validatedObservable(new vm()));
最佳答案
这是 knockout 验证中的一个错误。已修复 pull request 355并发布 version 2.0.0 .
请注意,要使其正常工作,可观察值中的值需要存储为数字,而不是字符串。您可以使用数字扩展器(位于 http://knockoutjs.com/documentation/extenders.html )强制将键入的值存储为数字而不是字符串。
关于validation - knockout 验证 : HTML5 min/max parsed as string,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16066346/