jQuery验证:使用远程验证器

时间:2011-04-19 07:38:46

标签: c# jquery asp.net-mvc validation

我正在努力实现我们在这里看到的内容:

http://weblogs.asp.net/cibrax/archive/2008/08/01/combining-jquery-validation-with-asp-net-mvc.aspx

我遇到的问题是它没有使用远程验证器。

<form action="<%=Url.Action("Register", "Home")%>" method="post" id="form-sign-up">

在我的情况下,每次我点击提交,它都会发布到Register操作 - 我似乎永远不会点击Json验证器方法。事实上,我下载了示例,远程帖子对我不起作用。远程部件是否适用于其他人的样本?

有谁知道如何让他们工作或有更好的榜样?

基本上我所拥有的是一个模态弹出编辑表单。我想在发布到保存(或在本例中为Register)方法之前进行所有验证。

我只需检查它是否必需,远程验证器检查它是否重复。在我的例子中,我错过了验证器并最终进入了save方法。显然,如果填写了字段并且不是重复字段,我只想保存。


编辑0:

我正在使用MVC 2

<form action="/Region/Save" method="post" id="Form-AddRegion">
    <div class="editor-label">
        <%: Html.Label("Region:") %>
        <%: Html.TextBoxFor(model => model.Region, new { @class = "edit required remote"}) %>
    </div>

    <p>
        <input type="submit" value="Save" />
        <input type="button" onClick="window.parent.CloseWindow();" value="Cancel" />
    </p>
</form>

public ActionResult ValidateRegion(string name)
{
    if (!something)
        return Json(true, JsonRequestBehavior.AllowGet);
    return Json(false, JsonRequestBehavior.AllowGet);
}

<script type="text/javascript">

    $(document).ready(function () {

        alert('jQuery is referenced properly');

        $("#Form-AddRegion").validate({
            rules:
            {
                //rules each for specified input-id
                Region:
                {
                    required: true,
                    remote: '<%=Url.Action("ValidateRegion","Region") %>'
                }
            },
            messages:
            {
                Region:
                {
                    required: "Please provide a Region",
                    remote: jQuery.format("{0} is already in use")
                }
            }
        });
    });
</script>

所以问题是在提交时,我总是在验证器/Region/Save之前发布到保存方法ValidateRegion!我错过了global.asax.cs中的路线吗?

我需要知道javascript代码何时发布/进入验证器方法?我会假设提交,但它似乎永远不会被召唤!?

当人们没有阅读您的问题并指出您的主要文档参考时,确实很烦人,有趣的是,我已经去过那里。

1 个答案:

答案 0 :(得分:0)

任何类型的表单验证必须连接到onsubmit函数,如果此函数将返回false表单将不会被提交。

<form onSubmit="function(){return false;}"> 

永远不会被提交

将jquery validate连接到onsubmit是通过validate()函数完成的, NEEDS 在文档就绪时完成

还有一项所有输入 NEEDS 名称属性可以进行验证

可以在http://docs.jquery.com/Plugins/Validation/

找到更多文档和大量示例

修改

这是你在jsFiddle中的代码: http://jsfiddle.net/fzf3q/1/

它起作用只有sugesstion确保在使用它之前包含验证功能:

alert($("#Form-AddRegion").validate)