javascript - 在分步向导中重置 knockout 验证中的错误

标签 javascript validation knockout.js

我已经使用 knockout 和模板绑定(bind)创建了一个分步向导,现在我想强制用户在进入下一页之前完成每个页面,完成后我的意思是 knockout 验证必须有效。 当 View 模型上没有错误时,将启用下一个按钮,并且在逐步执行向导时它可以正常工作,但当您进入一个步骤并按上一步时,就会出现问题。即使您返回,错误仍然“存在”,因此第 1 页上的下一步按钮被禁用,因为第 2 页无效。

我设置了一个 fiddle :http://jsfiddle.net/1uo8rtw2/1/

  1. 在姓名框中写下一些内容
  2. 按下一步
  3. 按上一个
  4. 现在您会看到“下一步”按钮已被禁用。

假设问题出在下面的代码中:

    self.errors = ko.validation.group(self.viewModel);

    self.PrevIsEnabled = ko.observable(false);
    self.NextIsEnabled = ko.computed(function() {
        return self.errors().length == 0 && self.SelectedTemplate() != "Age";
    });

是否有任何方法可以在返回时重置错误计数并强制 knockout 验证来重新验证当前模板?

最佳答案

self.errors 包含所有字段的错误。

您应该仅检查当前模板字段的有效性:

self.NextIsEnabled = ko.computed(function() {
    var selectedTemplate = self.SelectedTemplate();
    return selectedTemplate != "Age" 
           && self.viewModel[selectedTemplate].isValid();
}

当然,如果模板中有多个字段,您应该检查所有字段的有效性。

关于javascript - 在分步向导中重置 knockout 验证中的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26464350/

相关文章:

javascript - "Uncaught ReferenceError: fail is not defined."为什么会出现这种情况?

javascript - 由于包含空格而导致符号验证错误

knockout.js - 剑道击倒 : Binding "selected" viewmodel property with grid

javascript - 收到解析为 : undefined. 的 promise promise 元素必须解析为类或函数

php - Mysql PDO 转换验证

c# - knockout View 模型+所选项目->嵌套列表 "not defined"

javascript - KnockoutJS 与 Sammy.js SPA 建议

javascript - 使用 Rails 实例变量作为 JavaScript 条件

javascript - 如何将毫秒数转换为时间跨度以在 Google 图表中使用?

javascript - 将带有普通对象数组的普通对象展开为平面普通对象