检查用户输入isValid

时间:2012-10-23 13:45:56

标签: javascript jquery validation knockout.js

我正在使用knockout.js和knockout.validation。我创建了一个包含的书籍视图模型 书籍作者姓名和书名的2个属性:

function BookViewModel(bookObject) {
        var self = this;
        self.AuthorName = ko.observable(bookObject.AuthorName)
            .extend({
                required: { message: "Please enter menu name" },
                minLength: 4,
                maxLength: 10
            });
        self.Name = ko.observable(bookObject.Name)
            .extend({
                required: { message: "Please enter course name" },
                minLength: 4,
                maxLength: 10
            });
}

我在属性上应用了原生验证规则。现在我知道我们可以通过以下方式检查财产价值是否有效:

     bookViewModelObject.AuthorName.isValid()

现在借助上述声明,我们可以检查用户输入的作者姓名是否符合我们的验证规则。我的问题是如何在单个语句中检查bookViewModel的所有属性是否有效?意思是这样的:

     bookViewModelObject.isValid() 

2 个答案:

答案 0 :(得分:2)

您可以使用ko.validation.group

var viewModel = new BookViewModel(data);
viewModel.errors = ko.validation.group(viewModel);

viewModel.errors中,viewModel会有多少错误。

这是一个小提琴:http://jsfiddle.net/vyshniakov/3J3qV/

答案 1 :(得分:0)

不确定这是否有效但现在(使用KnockoutJS 3.0和验证插件2.1)你可以做到这一点,即。

ko.validation.init();
var validatedViewModel = ko.validatedObservable(new BookViewModel(book))();
ko.applyBindings(validatedViewModel);

validatedViewModel.isValid();

注意ko.validatedObservable()方法。

这是适当的jsfiddle