1

我有一个KnockoutJS应用程序,要求用户输入他们的实际地址。默认情况下,我们提供的字段映射到我们主要经营所在国家/地区的地址组成部分 - 具体而言,我们需要美国城市、州和邮政编码。这些字段以及“地址”字段是必需的。这是美国地址的典型表述。

但我们也有一个复选框,允许他们输入任何国家的地址。如果他们选中该框,我们将去掉城市、州和邮政编码框,并将这些字段替换为“国家/地区”框。因此,它们有一个“地址”和“国家”框,两者都是必需的。City、State 和 ZIP 是隐藏的,不应是必需的。

我不知道如何为此设置验证。本质上,直到运行时,我们才知道哪些字段是必需的,此时用户指示他们是否拥有美国或非美国地址。

您如何使用Knockout Validation做到这一点?

4

1 回答 1

0

可能有帮助的是onlyIf验证规则的构造。例如,爱尔兰不需要邮政编码,因此您可能有这样的 ViewModel:

var viewModel = {
    availableCountries : ko.observableArray(["United States", "Canada", "Ireland"]),
    country : ko.observable("United States")
};

viewModel.zip = ko.observable("").extend({ required: { onlyIf: function() { return viewModel.country() !== "Ireland"; }  }});
viewModel.errors = ko.validation.group(viewModel);

在这种情况下,只有美国和加拿大需要对 observable 进行任何input绑定,而爱尔兰则不需要。zip请参阅此小提琴以获取上述演示。

于 2013-05-28T21:58:20.540 回答