Lor*_*nzo 3 asp.net-mvc jquery-validate asp.net-mvc-2
我已经设置了一个简单的示例来在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>
Run Code Online (Sandbox Code Playgroud)
然后我通过以下代码启用了客户端验证
<% Html.EnableClientValidation(); %>
<% using (Html.BeginForm() { %>
<% } %>
Run Code Online (Sandbox Code Playgroud)
然后,我不知道如何为每个输入启用内联验证,因此当用户离开任何一个焦点时,就会发生验证.
客户端验证似乎只在我完成提交后才有效.但这不是"客户端验证",因为属性从我的服务器代码验证...
有什么建议吗?
最后,我完成了解决方案.
首先,我的表单从未绑定到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();
});
Run Code Online (Sandbox Code Playgroud)
然后我在脚本块中调用了相同的函数,我在对话标记代码$(document).ready()函数中放置了该函数
在firebug的帮助下,我在EnableClientSideValidation()函数内部放置了一个断点,然后经历了只有在主页面准备好但不是从对话框中调用的事实.这是因为我在<form>...</form>标签内部有"对话框"脚本块,所以脚本没有用.
像这样的代码
<% using (Html.BeginForm()) { %>
//DIALOG FORM CODE WAS HERE
<script type="text/javascript">
$(document).ready(function () {
EnableClientSideValidation();
});
</script>
<% } %>
Run Code Online (Sandbox Code Playgroud)
已改为
<% using (Html.BeginForm()) { %>
//DIALOG FORM CODE WAS HERE
<% } %>
<script type="text/javascript">
$(document).ready(function () {
EnableClientSideValidation();
});
</script>
Run Code Online (Sandbox Code Playgroud)
最后一切都开始了!我想感谢vandalo和kdawg帮助寻找解决方案.还有一些东西仍然遗漏,但你的答案刺激了我的脑袋.
我发布这个可能有同样问题的其他人.
| 归档时间: |
|
| 查看次数: |
4745 次 |
| 最近记录: |