Javascript 对对象应用敲除验证

Javascript 对对象应用敲除验证,javascript,validation,knockout.js,Javascript,Validation,Knockout.js,我一直在想我应该如何将淘汰验证应用到我的视图模型中。在我找到的所有示例中,验证都应用于视图模型中的各个属性。但是,我想知道是否可以对java脚本对象中的单个属性应用验证?以下是我的视图模型代码: $(document).ready(function () { BindViewModel(); }); function ManageCustomerViewModel() { var self = this; self.searchResults = ko.mappin

我一直在想我应该如何将淘汰验证应用到我的视图模型中。在我找到的所有示例中,验证都应用于视图模型中的各个属性。但是,我想知道是否可以对java脚本对象中的单个属性应用验证?以下是我的视图模型代码:

$(document).ready(function () {
    BindViewModel();
});

function ManageCustomerViewModel() {

    var self = this;

    self.searchResults = ko.mapping.fromJS([]);
    self.customerCount = ko.observable();
    self.Customer = ko.observable();
    self.SearchOnKey = function (data, event) {
        if (event.keyCode == 13 || event.keyCode == 9) {
            self.CustomerSearch(data);
        }
        else {
            return true;
        }
    };

    self.AddCustomer = function () {

         var cust =  {
            Id: 0,
            FirstName: "",
            LastName: "",
            EmailAddress: "",
            AlternatePhone: "",
            BillingAddress: "",
            BillingCity: "",
            BillingState: "",
            BillingZip: "",
            PrimaryPhone: "",
            ShippingAddress: "",
            ShippingCity: "",
            ShippingState: "",
            ShippingZip: ""
         }
         self.Customer(cust);
    };

    self.UpdateCustomer = function () {
        ShowLoading();
        if (self.Customer().Id > 0) {
            $.ajax("../api/CustomerAPI/UpdateCustomer", {
                data: ko.mapping.toJSON(self.Customer),
                type: "post",
                dataType: "json",
                contentType: "application/json; charset=utf-8",
                success: function (e) {
                    HideLoading();
                    $('#Modal').modal('hide');
                }
            }).fail(function () { HideLoading() });
        }
        else {
            $.ajax("../api/CustomerAPI/InsertNewCustomer", {
                data: ko.mapping.toJSON(self.Customer),
                type: "post",
                dataType: "json",
                contentType: "application/json; charset=utf-8",
                success: function (e) {
                    HideLoading();
                    $('#Modal').modal('hide');
                }
            }).fail(function () { HideLoading() });
        }
    };

    self.GetCustomerDetails = function (c) {
        ShowLoading();
        $.getJSON("../api/CustomerAPI/GetCustomerByID", { id: c.Id }, function (cust) {
            self.Customer(cust);
            HideLoading();
        }).fail(function () { HideLoading() });
    }

    self.CustomerSearch = function (data) {

        var first = $("#txtFirstName").val();
        var last = $("#txtLastName").val();
        var email = $("#txtEmail").val();

        first = first.trim();
        last = last.trim();
        email = email.trim();

        if (first == "" && last == "" & email == "") {
            alert("Please enter at least one search value");
        }
        else {
            ShowLoading();
            $.getJSON("../api/CustomerAPI/GetCustomerSearchResults", { lastname: last, firstname: first, email: email }, function (allData) {
                ko.mapping.fromJS(allData, self.searchResults);
                self.customerCount(self.searchResults().length);
                HideLoading();
            }).fail(function () { HideLoading() });
        }
    };
}

function BindViewModel() {

    ko.applyBindings(new ManageCustomerViewModel());
};

如您所见,我使用Customer对象来回传递数据。我想为Customer的属性添加验证。这是可行的还是我做错了?

您可以将验证分配给对象中的单个观察值。如果您有一个可行的解决方案,并且正在解决如何改进代码的反馈,您可能会感兴趣,但请务必阅读他们的常见问题解答。您不能将验证添加到非knokcout观察值的属性。ko.validation方法“extend”只能与一个可观察对象链接。@wayneelley你能提供一个例子吗?就像我的一篇文章中的小提琴一样