Knockout-Validation不会触发

时间:2013-10-10 05:15:45

标签: javascript jquery cakephp knockout.js knockout-validation

我在CakePHP上使用knockout.js,我似乎无法让knockout-validation工作。我正在使用chrome和knockout-validation加载到脚本中,并且还显示在网络选项卡中。此外,当我删除“包含脚本”时,我会收到各种错误,所以我知道它被包含在内。

我有一个名为ReserveViewModel的视图模型。这是我正在尝试验证的输入示例。我没有得到任何错误,它只是没有标记任何东西。

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

function ReserveViewModel(){

    var self = this;

    self.firstName = ko.observable("").extend({ required: true })
                .extend({ minLength: 3 })
                .extend({ pattern: {
                    message: 'Please enter your first name',
                    params: '^[a-zA-Z]'
                }});

    //button to continue to another div with more options
    self.continue = function(){
        self.errors = ko.validation.group(self);
        if (self.errors().length == 0) {
            alert('Error found');
        }
    }

}

ko.validation.registerExtenders();

ko.applyBindings(new ReserveViewModel());

当我单击“继续”按钮并且firstName输入为空时,它仍然继续。我尝试在self.errors().length上发出提醒,但会导致以下错误

function m(){if(0<arguments.length){if("function"===typeof r)r.apply(c,arguments);else throw Error("Cannot write a value to a ko.computed unless you specify a 'write' option. If you wish to read the current value, don't pass any parameters.");return this}l||e();a.q.bb(m);return k}

如果它有所不同,我将通过CakePHP通过AJAX调用加载此内容。这会影响到什么吗?可能是某种关闭吗?

编辑我让它工作

我最终使用jQuery来检索所有必需的脚本。然后我会使用AJAX来填充div。在我通过AJAX检索的页面上,我包含了ViewModel文件。

由于文件在不同时间加载,这是一个奇怪的混淆,所以我只需要用jquery顺序加载它们。

0 个答案:

没有答案