欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  技术分享

使用Ajax验证Knockout_Knockout验证

程序员文章站 2022-03-01 16:18:26
...

介绍

在Knockout,我们可以使用自定义验证,以验证您的视图模型。

但有些时候我们可能需要从服务端检查验证。在这里,我们将展示我们如何能够利用基因敲除验证与jQuery Ajax和服务器结束通话。


背景

对于快速预览退房http://jsfiddle.net/FkxKK/

要执行我们使用的库,如本例中,


- jquery-2.1.1.js


- Knockout- 3.1.0.js


- knockout.validation.js


- jquery.mockjax.js嘲笑我们的ajax调用,这是一个令人兴奋的库来使用ajax的嘲讽。


使用代码

首先,我们将使用索引自定义的验证规则´userNameUsed´这样。

- VAL表示从HTML DOM绑定的值,otherValue什么样的价值,我们预期。

- $时,直到ajax调用完成后,确保SYNCHS ajax调用,并且该范围内的等待。

- IsUsed是从服务器返回,表明如果使用的名称已被使用或不使用(或比较你首选返回的对象或其属性。)


/*Validations*/
ko.validation.rules[´userNameUsed´] = {
    //val form binded value from html, otherVale what we wanted tobe
    validator: function (val, otherVal) {       
        var isUsed;
        var json = JSON.stringify({ userName: val });
        $.when(
            $.ajax({
                url: ´/validation/IsUserNameUsed´,
                dataType: "json",
                type: "POST",
                contentType: ´application/json; charset=utf-8´,
                data: json,
                async: false,
            })
        ).then(function (data, textStatus, jqXhr) {
           isUsed = (textStatus === ´success´) ? data.IsUsed : null;
        });
        return isUsed === otherVal;         //if false error message would be shown
    },
    message: ´This user name is already in use´
};
ko.validation.registerExtenders();
使用此验证规则到我们的视图模型像这样,与其他验证规则



/*fields*/
self.userName = ko.observable(´´).extend({ required: true, userNameUsed: false });
正如我们所分配的userNameUsed:假的视图模型,意味着我们期待的结果是是假的


- 如果验证器的ajax调用data.IsUsed返回false,将显示错误消息

- 如果ajax调用失败或data.IsUsed返回true,将显示错误消息

我们会发现两个测试案例脚本/ mock.validationPage.js,因为我们没有使用任何真正的服务器来模仿我们的ajax调用。

取消注释在列表中的一个测试,如果验证是工作或没有。

这将是更好,如果我们使用AJAX验证基本验证所需的一样,最小值,最大值...等等之后

源码下载地址: http://dwtedx.com/download.html?bdkey=s/1c0ByAas 密码: msn9