Knockout.js 敲除验证isValid始终返回true

Knockout.js 敲除验证isValid始终返回true,knockout.js,knockout-validation,Knockout.js,Knockout Validation,我不熟悉使用knockout,我正在尝试让验证插件工作。但是,IsValid总是返回回合。我也试过了 ViewModel.errors().length==0 但它总是零 ko.validation.configure({ registerExtenders: true, messagesOnModified: true, insertMessages: true, parseInputAttributes: true,

我不熟悉使用knockout,我正在尝试让验证插件工作。但是,IsValid总是返回回合。我也试过了 ViewModel.errors().length==0 但它总是零

    ko.validation.configure({
        registerExtenders: true,
        messagesOnModified: true,
        insertMessages: true,
        parseInputAttributes: true,
        messageTemplate: null
    });


    function ViewModel(survey) {
        // Data
        var self = this;


        self.ProjectNumber = ko.observable();
        self.StandardName = ko.observable();
        self.Name = ko.observable().extend({ required: true });

        self.save = function () {
            console.log("Valid: " + ViewModel.errors.length);
            if (ViewModel.errors().length == 0) {
                $.ajax("@Url.Content("~/Survey/TEST/")", {
                    data: ko.toJSON(self),
                    type: "post",
                    contentType: 'application/json',
                    dataType: 'json'
                });
            } else {
                ViewModel.errors.showAllMessages();
            }
        };


    }

    ViewModel.errors = ko.validation.group(ViewModel);

    ko.applyBindings(new ViewModel);
</script>
这是我的其余代码,请帮助。

    ko.validation.configure({
        registerExtenders: true,
        messagesOnModified: true,
        insertMessages: true,
        parseInputAttributes: true,
        messageTemplate: null
    });


    function ViewModel(survey) {
        // Data
        var self = this;


        self.ProjectNumber = ko.observable();
        self.StandardName = ko.observable();
        self.Name = ko.observable().extend({ required: true });

        self.save = function () {
            console.log("Valid: " + ViewModel.errors.length);
            if (ViewModel.errors().length == 0) {
                $.ajax("@Url.Content("~/Survey/TEST/")", {
                    data: ko.toJSON(self),
                    type: "post",
                    contentType: 'application/json',
                    dataType: 'json'
                });
            } else {
                ViewModel.errors.showAllMessages();
            }
        };


    }

    ViewModel.errors = ko.validation.group(ViewModel);

    ko.applyBindings(new ViewModel);
</script>
ko.validation.configure({
registerExtenders:对,
messages:true,
insertMessages:true,
ParseInputAttribute:true,
messageTemplate:null
});
功能视图模型(调查){
//资料
var self=这个;
self.ProjectNumber=ko.observable();
self.StandardName=ko.observable();
self.Name=ko.observable().extend({required:true});
self.save=函数(){
log(“有效:”+ViewModel.errors.length);
if(ViewModel.errors().length==0){
$.ajax(@Url.Content(“~/Survey/TEST/”){
数据:ko.toJSON(self),
类型:“post”,
contentType:'应用程序/json',
数据类型:“json”
});
}否则{
ViewModel.errors.showAllMessages();
}
};
}
ViewModel.errors=ko.validation.group(ViewModel);
ko.应用绑定(新ViewModel);

ViewModel
只是一个构造函数,而不是已实现模型的实例。所以您对构造函数应用了
errors
属性,并尝试验证这个没有意义的构造函数

    ko.validation.configure({
        registerExtenders: true,
        messagesOnModified: true,
        insertMessages: true,
        parseInputAttributes: true,
        messageTemplate: null
    });


    function ViewModel(survey) {
        // Data
        var self = this;


        self.ProjectNumber = ko.observable();
        self.StandardName = ko.observable();
        self.Name = ko.observable().extend({ required: true });

        self.save = function () {
            console.log("Valid: " + ViewModel.errors.length);
            if (ViewModel.errors().length == 0) {
                $.ajax("@Url.Content("~/Survey/TEST/")", {
                    data: ko.toJSON(self),
                    type: "post",
                    contentType: 'application/json',
                    dataType: 'json'
                });
            } else {
                ViewModel.errors.showAllMessages();
            }
        };


    }

    ViewModel.errors = ko.validation.group(ViewModel);

    ko.applyBindings(new ViewModel);
</script>
save
方法中的
ViewModel
更改为
self

    ko.validation.configure({
        registerExtenders: true,
        messagesOnModified: true,
        insertMessages: true,
        parseInputAttributes: true,
        messageTemplate: null
    });


    function ViewModel(survey) {
        // Data
        var self = this;


        self.ProjectNumber = ko.observable();
        self.StandardName = ko.observable();
        self.Name = ko.observable().extend({ required: true });

        self.save = function () {
            console.log("Valid: " + ViewModel.errors.length);
            if (ViewModel.errors().length == 0) {
                $.ajax("@Url.Content("~/Survey/TEST/")", {
                    data: ko.toJSON(self),
                    type: "post",
                    contentType: 'application/json',
                    dataType: 'json'
                });
            } else {
                ViewModel.errors.showAllMessages();
            }
        };


    }

    ViewModel.errors = ko.validation.group(ViewModel);

    ko.applyBindings(new ViewModel);
</script>
    self.save = function () {
        console.log("Valid: " + self.errors.length);
        if (ViewModel.errors().length == 0) {
            $.ajax("@Url.Content("~/Survey/TEST/")", {
                data: ko.toJSON(self),
                type: "post",
                contentType: 'application/json',
                dataType: 'json'
            });
        } else {
            self.errors.showAllMessages();
        }
    };
…和:

    ko.validation.configure({
        registerExtenders: true,
        messagesOnModified: true,
        insertMessages: true,
        parseInputAttributes: true,
        messageTemplate: null
    });


    function ViewModel(survey) {
        // Data
        var self = this;


        self.ProjectNumber = ko.observable();
        self.StandardName = ko.observable();
        self.Name = ko.observable().extend({ required: true });

        self.save = function () {
            console.log("Valid: " + ViewModel.errors.length);
            if (ViewModel.errors().length == 0) {
                $.ajax("@Url.Content("~/Survey/TEST/")", {
                    data: ko.toJSON(self),
                    type: "post",
                    contentType: 'application/json',
                    dataType: 'json'
                });
            } else {
                ViewModel.errors.showAllMessages();
            }
        };


    }

    ViewModel.errors = ko.validation.group(ViewModel);

    ko.applyBindings(new ViewModel);
</script>
// create instance of model
var vm = new ViewModel; 
// setup validation for instance
vm.errors = ko.validation.group(vm);
// apply bindings
ko.applyBindings(vm);

ViewModel
只是一个构造函数,而不是已实现模型的实例。所以您对构造函数应用了
errors
属性,并尝试验证这个没有意义的构造函数

    ko.validation.configure({
        registerExtenders: true,
        messagesOnModified: true,
        insertMessages: true,
        parseInputAttributes: true,
        messageTemplate: null
    });


    function ViewModel(survey) {
        // Data
        var self = this;


        self.ProjectNumber = ko.observable();
        self.StandardName = ko.observable();
        self.Name = ko.observable().extend({ required: true });

        self.save = function () {
            console.log("Valid: " + ViewModel.errors.length);
            if (ViewModel.errors().length == 0) {
                $.ajax("@Url.Content("~/Survey/TEST/")", {
                    data: ko.toJSON(self),
                    type: "post",
                    contentType: 'application/json',
                    dataType: 'json'
                });
            } else {
                ViewModel.errors.showAllMessages();
            }
        };


    }

    ViewModel.errors = ko.validation.group(ViewModel);

    ko.applyBindings(new ViewModel);
</script>
save
方法中的
ViewModel
更改为
self

    ko.validation.configure({
        registerExtenders: true,
        messagesOnModified: true,
        insertMessages: true,
        parseInputAttributes: true,
        messageTemplate: null
    });


    function ViewModel(survey) {
        // Data
        var self = this;


        self.ProjectNumber = ko.observable();
        self.StandardName = ko.observable();
        self.Name = ko.observable().extend({ required: true });

        self.save = function () {
            console.log("Valid: " + ViewModel.errors.length);
            if (ViewModel.errors().length == 0) {
                $.ajax("@Url.Content("~/Survey/TEST/")", {
                    data: ko.toJSON(self),
                    type: "post",
                    contentType: 'application/json',
                    dataType: 'json'
                });
            } else {
                ViewModel.errors.showAllMessages();
            }
        };


    }

    ViewModel.errors = ko.validation.group(ViewModel);

    ko.applyBindings(new ViewModel);
</script>
    self.save = function () {
        console.log("Valid: " + self.errors.length);
        if (ViewModel.errors().length == 0) {
            $.ajax("@Url.Content("~/Survey/TEST/")", {
                data: ko.toJSON(self),
                type: "post",
                contentType: 'application/json',
                dataType: 'json'
            });
        } else {
            self.errors.showAllMessages();
        }
    };
…和:

    ko.validation.configure({
        registerExtenders: true,
        messagesOnModified: true,
        insertMessages: true,
        parseInputAttributes: true,
        messageTemplate: null
    });


    function ViewModel(survey) {
        // Data
        var self = this;


        self.ProjectNumber = ko.observable();
        self.StandardName = ko.observable();
        self.Name = ko.observable().extend({ required: true });

        self.save = function () {
            console.log("Valid: " + ViewModel.errors.length);
            if (ViewModel.errors().length == 0) {
                $.ajax("@Url.Content("~/Survey/TEST/")", {
                    data: ko.toJSON(self),
                    type: "post",
                    contentType: 'application/json',
                    dataType: 'json'
                });
            } else {
                ViewModel.errors.showAllMessages();
            }
        };


    }

    ViewModel.errors = ko.validation.group(ViewModel);

    ko.applyBindings(new ViewModel);
</script>
// create instance of model
var vm = new ViewModel; 
// setup validation for instance
vm.errors = ko.validation.group(vm);
// apply bindings
ko.applyBindings(vm);
您是否尝试过
console.log(“有效:”+ViewModel.errors().length)console.log(“有效:”+ViewModel.errors().length)注意括号。