Knockout Validation

Knockout 将View与Data进行双向绑定,在View上的数据改变能够自动反映到View所绑定的数据源上,同理,数据源的改变也能够立即反映到相关的View上。我们在使用Knockout的时候,还需要做的一个事情就是数据校验,在这方面,Knockout提供了很好的校验机制。

1.下载安装


下载之后我们的工程的javascript目录下面就有了knockout.js及knockout.validation.js文件了!


2.示例

引入相关文件:

<script src="~/Scripts/jquery-1.10.2.js"></script>
<script src="~/Scripts/knockout-2.3.0.js"></script>
<script src="~/Scripts/knockout.validation.js"></script>
页面代码:

@{
    ViewBag.Title = "Home Page";
}

<style type="text/css">
    .validationMessage {
        color: red;
    }
</style>

<script type="text/javascript">
    $(document).ready(function() {
        var Person = function() {
            var self = this;
            self.name = ko.observable().extend({
                required:{ params: true, message: "please input name."} ,
                maxLength: 6
            });
            self.age = ko.observable().extend({
                required: true,
                number: {
                    params: true,
                    message: "必须是数字",
                },
                max:100
            });
            self.email = ko.observable().extend({
                required: {
                    params: true,
                    message: "请填写Email"
                },
                email: {
                    params: true,
                    message: "Email格式不正确"
                }
            });
            self.birthday = ko.observable().extend({
                required: true,
                date: {
                    params: true,
                    message: "日期格式不正确"
                }
            });
            self.score = ko.observable().extend({
                required: true,
                pattern: {
                    params: /^\d+[\.]?\d{0,2}$/g,
                    message: "必须是数字,并且最多两位小数!"
                }
            });

            self.submit = function() {
                if (person.isValid().length == 0) {
                    alert('ok');
                } else {
                    alert("error");
                }
            };
        };

        var person = new Person();
        ko.applyBindings(person);
        person.isValid = ko.validation.group(person);

    });
</script>

<br />
<fieldset>
    <legend>Add Person</legend>
    <div>Name:</div>
    <div>
        <input data-bind="value: name" />
    </div>
    <div>
        Age:
    </div>
    <div>
        <input data-bind="value: age" />
    </div>
    <div>
        Email:
    </div>
    <div>
        <input data-bind="value: email" />
    </div>
    <div>
        Score:
    </div>
    <div>
        <input data-bind="value: score" /><br /><br />
    </div>
    <div>
        <button id="btn" data-bind="click:submit">submit</button>
    </div>
</fieldset>

效果如下:



3.总结

knockout自动捕获了控件的鼠标移开事件,自动进行校验。在提交的时候,通过isValidate来决定是否提交表单.

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值