asp.net-mvc - 使用 MVC 和 jQuery 进行内联客户端验证

标签 asp.net-mvc asp.net-mvc-2 jquery-validate

我设置了一个简单的示例来在 jquery UI 对话框中显示表单,并希望在该表单上启用内联客户端验证

然后我将脚本添加到我的母版页

<script type="text/javascript" src="<%: Url.Content( "~/_assets/js/jquery-1.4.3.min.js" )%>"></script>
<script type="text/javascript" src="<%: Url.Content( "~/_assets/js/jquery.validate.min.js" )%>"></script>
<script type="text/javascript" src="<%: Url.Content( "~/_assets/js/MicrosoftMvcJQueryValidation.js" ) %>"></script> 

然后我通过以下代码启用了客户端验证

<% Html.EnableClientValidation(); %>
<% using (Html.BeginForm() { %>
<% } %>

然后,我不知道如何为每个输入启用内联验证因此当用户离开其中任何一个输入的焦点时,就会发生验证

客户端验证似乎只有在我完成提交后才起作用。但这不是“客户端验证”,因为属性是从我的服务器代码验证的......

有什么建议吗?

最佳答案

终于解决了。

首先,我的表单从未绑定(bind)到 MicrosoftMvcJQueryValidation.js 内的代码提供的验证回调。脚本。这是因为我使用的是 jQuery 对话框,并且表单位于对话框内,而脚本包含在母版页中。

我对解决方案的第一次尝试是修改 MicrosoftMvcJQueryValidation.js 。特别是我添加了一个功能 EnableClientSideValidation()我将 $(document).ready 中的代码移动到了哪里函数如以下代码示例所示

function EnableClientSideValidation() {
    var allFormOptions = window.mvcClientValidationMetadata;
    if (allFormOptions) {
        while (allFormOptions.length > 0) {
            var thisFormOptions = allFormOptions.pop();
            __MVC_EnableClientValidation(thisFormOptions);
        }
    }
}

$(document).ready(function () {
    EnableClientSideValidation();
});

然后,我在放置在对话框标记代码 $(document).ready() 中的脚本 block 内调用了相同的函数。功能

在 firebug 的帮助下,我在 EnableClientSideValidation() 内放置了一个断点函数,然后经历了仅在主页准备好时调用而不是从对话框中调用的事实。这是因为我的“对话框”脚本 block 位于 <form>...</form> 内。标签,所以脚本不起作用。

这样的代码

<% using (Html.BeginForm()) { %>

    //DIALOG FORM CODE WAS HERE

    <script type="text/javascript">
    $(document).ready(function () {
        EnableClientSideValidation();
    });
    </script>
<% } %>

已更改为

<% using (Html.BeginForm()) { %>

    //DIALOG FORM CODE WAS HERE

<% } %>

<script type="text/javascript">
$(document).ready(function () {
    EnableClientSideValidation();
});
</script>

终于一切开始工作了!谢谢vandalokdawg帮助寻找解决方案。虽然还有一些遗漏,但你的回答刺激了我的头脑。

我将此信息发布给其他可能遇到相同问题的人。

关于asp.net-mvc - 使用 MVC 和 jQuery 进行内联客户端验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4172319/

相关文章:

asp.net-mvc - Linux Mono 上的 SparkView 引擎

asp.net - 默认模型绑定(bind)器不绑定(bind)我的模型类

css - 文本框的 MVC4 图形验证

entity-framework - 在EF实体的not-null属性中使用Html.TextBoxFor显示空文本框

asp.net-mvc - 如何将 RouteValueDictionary 添加到 T4MVC ActionLink

php - jQuery.validator.addMethod 检查用户名

jquery - 如何让不显眼的 jquery 远程验证器执行异步..?

javascript - 在从 IResultFilter 返回的 Shape View 中调用 Script.Require 在 Orchard CMS 中不起作用?

c# - 使用 Spring .NET 将依赖项注入(inject) MVC Controller

asp.net-mvc - 在一个项目中使用 Razor 和 ASPX View 引擎的 ASP.Net MVC