首页 > 解决方案 > 添加到数组中的字段未显示必填字段验证错误

问题描述

我正在尝试通过Observable Array在表单中​​添加字段KnockoutJS以重复相同的字段部分。但问题是Required Field Validation errors没有显示通过Observable Array.

下面是我正在尝试的

 var orfViewModel = function () {
 var self = this;
 self.currentPage = ko.observable(1);
 self.referringPage = ko.observable();
 self.StrainDetails = ko.observableArray();

 self.koArrayErrors = ko.validation.group(self.StrainDetails(), {
    deep: true,
    live: true  });

 self.addStrain = function () {
    self.StrainDetails.push(new StrainVM());
 }

  self.remove = function (item) {
    self.StrainDetails.remove(item);
  };

self.koArrayErrors在数组中添加了验证错误。因此,当单击页面上的下一步按钮时,我希望在必填字段上看到字段必填错误消息。下面是next button逻辑

  self.next = function () {
    self.errors = ko.validation.group(this);
    console.log(self.errors().length);
    if (self.errors().length != 0) {
        self.errors.showAllMessages();
        self.koArrayErrors.showAllMessages();
       
    }
    if (!formIsValid('Page_' + self.currentPage())) {
        $(window).scrollTop(0);
        return false;
    }

    if (self.referringPage() != null) {
        self.currentPage(self.referringPage());
        self.referringPage(null);
    } else {
        self.currentPage(self.currentPage() + 1);
    }
    self.gotoPage();
};

self.gotoPage = function () {
    $("div[id^='Page_']").hide();
    $("div[id^='Page_" + this.currentPage() + "']").show();
    $(window).scrollTop(0);
    self.errors.showAllMessages(false);
    self.koArrayErrors.showAllMessages(false);
};

下面是StrainVM()将数据推送到Observable array类似的

function StrainVM() { var self = this;

self.pdtNeeded = ko.observable().extend({ required: { params: true, message: "Required! Please sect Pdt Needed" } });
 
ko.validation.registerExtenders();

即使我没有为pdtNeeded字段输入任何内容,单击“下一步”按钮也不会将我带到下一页,并且不会Required! Please sect Pdt Needed在字段旁边显示错误。

用户将不知道是什么不让他们点击下一页。

如何处理此处添加的验证Observable array

标签: javascriptjqueryknockout.jsobservableknockout-validation

解决方案


推荐阅读