javascript - 隐藏字段的 Knockout.js 验证

标签 javascript jquery knockout.js

我正在为我的表单实现 knockout validation ,并且我想让一个字段只有在显示时才需要。根据表单中其他字段的选择,某些控件可能会被 visibility:hidden 或 display:none 隐藏。我怎样才能使这些字段仅在显示时才需要?这个我试过了

var name = ko.observable().extend({
        required: {
            onlyIf: function () {
                return ($('#name').is(':visible'));
            },
            message: '*** Required'
        }
    });

但它似乎不起作用,我不确定它是否应该(你能在 knockout onlyIf params 中编写像那样的自定义逻辑吗?)。

感谢您的帮助。

最佳答案

如评论中所述,您需要做的就是

在 ViewModel 中声明一个 observable per say self.nameVisible=ko.observbale() 从任何地方设置它的值 True/False(来自 DB 或基于其他控制选择)。稍后您应该在验证中使用 self.nameVisible().extendonlyIf 组合来制作东西(隐藏/显示元素+动态条件验证)工作。

HTML:

<input type="text" data-bind="value:name,visible:nameVisible"/>

View 模型:

var ViewModel = function () {
    var self = this;
    self.nameVisible = ko.observable(true); //Set it dynamically 
    self.name = ko.observable().extend({
        required: {
            message: '*** Required',
            onlyIf: self.nameVisible
        }
    });
};
ko.applyBindings(new viewModel());

关于javascript - 隐藏字段的 Knockout.js 验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33263139/

相关文章:

asp.net-mvc - 混合 MVC Razor 和 Knockout

javascript - PHP 依赖于 Javascript 函数

javascript - 使用 jest 作为 chai 期望风格的模块?

javascript - 如何在 React 中为对象的对象定义 Prop 验证规则?

javascript - 在另一个函数中调用即时函数

javascript - 循环并根据 id 将数组放入数组中失败

javascript - 为什么 $(window).width() 在页面加载时发生变化?

javascript - 从文本框中删除文本

javascript - 当可观察数组中的对象的属性更新时,如何使可观察数组通知其依赖项?

javascript - 在 Knockout 中搜索可观察数组时出现问题