淘汰赛 + Jquery 验证 [英] Knockout + Jquery Validate

查看:23
本文介绍了淘汰赛 + Jquery 验证的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试使用 jquery validate 设置验证,并且我已经从服务器返回了视图模型,映射到客户端并成功地将淘汰赛 js 绑定了一些数据.

我包含了一个调用来验证但验证永远不会触发,但是如果我在输入框上放置一个类然后调用valid它会按预期触发.

有什么想法吗?

}<h2>@ViewBag.Message</h2><form id="nameSubmit" action=""><div>名称为:<span id="test" data-bind="text: Name"></span>

<div>他是<span id="age" data-bind="text: Age"></span>

<div>他来自<input type="text" id="birthPlace" name="birthPlace"/>

<div><button data-bind="click: save">点击我</button>

</表单>

解决方案

默认情况下,jQuery Validate 在提交时进行验证.因此,如果淘汰赛打断了这一点,即实际上没有触发 onSubmit 事件,那就可以了.您最好的选择可能是按照您在 sendToServer 函数中的某些计划进行操作 - 从您的淘汰提交事件手动触发验证:

if (!$('form').valid()){$('form').showErrors();返回假;}//否则,继续进行淘汰赛需要做的任何事情...返回真;

I'm trying to setup validation with jquery validate, and i've got the viewmodel coming back from the server, mapped to the client and successfully have knockout js binding some data.

I included a called to validate but the validation never triggers, however if I put a class on the input box and then call valid it triggers as expected.

Any ideas?

<script type="text/javascript">
        var viewModel;
        $(document).ready(function () {
            $.ajax({
                url: 'Home/GetUserData',
                type: 'post',
                success: function (data) {
                    viewModel = ko.mapping.fromJS(data);
                    viewModel.save = function () { sendToServer(); };
                    ko.applyBindings(viewModel);
                    main();
                }
            });
        });

        function main() {
            $("form").validate({
                rules: {
                    birthPlace: {
                        required: true,
                        minlength: 2
                    }
                }
            });
        }

        function sendToServer() {
            alert($("form").valid());
        }

    </script>
}
<h2>@ViewBag.Message</h2>
<form id="nameSubmit" action="">
    <div>
        The name is: <span id="test" data-bind="text: Name"></span>
    </div>
    <div>
        He's <span id="age" data-bind="text: Age"></span>
    </div>
    <div>
        He's from
        <input type="text" id="birthPlace" name="birthPlace"/>
    </div>
    <div>
        <button data-bind="click: save">Click Me</button>
    </div>
</form>

解决方案

By default jQuery Validate does it's validation on submit. So if knockout is interrupting that, i.e. by not actually triggering the onSubmit event, that would do it. Your best bet may be to do as you were somewhat planning there in your sendToServer function - manually trigger the validation from your knockout submit event:

if (!$('form').valid()){
    $('form').showErrors();
    return false;
}

//otherwise, get on with whatever knockout needs to do
...
return true;

这篇关于淘汰赛 + Jquery 验证的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
其他开发最新文章
热门教程
热门工具
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆