2012-07-31 78 views
18

我正在尝试使用带条件语句的KnockoutValidation。见下面的代码:KnockoutValidation和有条件的必需规则

self.transactionType = ko.observable('Option1'); 

self.ConditionalField = ko.observable().extend({ 
    required: true, 
    onlyIf: self.transactionType = ="Option2" 
}); 

不幸的是,这是行不通的。如果transactionType的值为'Option2',我只想要ConditionalField

使用条件验证与knockout.validation.js的最佳方式是什么?

回答

37

我解决了它。

首先,我在定义conditionalfield后犯了错误,宣布transactiontype。工作的最终代码如下所示:

self.transactionType = ko.observable("Option1"); 

self.conditionalField = ko.observable().extend({ 
    required: { 
    onlyIf: function() { 
     return self.transactionType() == "Option2"; 
    } 
    } 
}); 
+8

那么,据说托马斯爱迪生在发明了第一个商用实用白炽灯之前尝试了3000次失败。 http://en.wikipedia.org/wiki/Thomas_Edison#cite_note-28,但我发现你的答案就像照亮...谢谢&+ 1 – 2013-01-08 13:39:43

+2

可悲的是,这只是如果东西没有记录在任何地方。谢谢! – 2013-04-03 20:35:57

+2

[onlyIf documentation](https://github.com/Knockout-Contrib/Knockout-Validation/wiki/Conditional-Validation-with-onlyIf-parameter) – Homer 2013-12-12 20:59:45