2013-04-17 16 views
2

似乎KO驗證插件將字符串解析爲HTML5數字輸入屬性(例如,min,max),而不是數字。這導致數字輸入在具有最小/最大屬性時被錯誤地確定爲無效。參見:http://jsfiddle.net/hTvsj/敲除驗證:將HTML5最小/最大值解析爲字符串

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())); 
+0

是的,這看起來正是發生了什麼。這是導致麻煩的一行:'params:element.getAttribute(attr)|| TRUE'。如果您只將最大/最小值設置爲字符串,則可以重新創建相同的問題。這看起來像是我在KO驗證中的一個錯誤。 –

回答

2

這是一個在淘汰賽驗證的錯誤。我修復了這個bug,併爲它創建了一個pull request

您可以在我的修復程序https://github.com/codethug/Knockout-Validation/blob/master/Src/knockout.validation.js處看到更新的敲除驗證碼。

請注意,爲此,observable中的值需要存儲爲數字,而不是字符串。您可以使用數字擴展器(位於http://knockoutjs.com/documentation/extenders.html)強制鍵入的值以數字而非字符串形式存儲。

+0

Code Thug - https://github.com/codethug/Knockout-Validation/blob/master/Src/knockout.validation.js。此鏈接正在工作 – Akki

相關問題