我设置了一个简单的示例来显示 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() { %>
<% } %>
然后,我不知道如何启用内联验证对于每个输入因此,当用户离开其中任何一个的焦点时,就会发生验证.
客户端验证似乎只有在我完成提交后才起作用。但这不是“客户端验证”,因为属性是从我的服务器代码验证的......
有什么建议吗?
最后我已经解决了。
首先,我的表单从未绑定到由内部代码提供的验证回调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()
功能
在萤火虫的帮助下,我在里面放置了一个断点EnableClientSideValidation()
函数,然后经历了仅在主页准备好时调用而不是从对话框中调用的事实。这是因为我的“对话框”脚本块位于<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>
终于一切开始工作了!我想谢谢vandalo and kdawg帮助寻找解决方案。虽然还有一些遗漏,但你的回答刺激了我的头脑。
我将其发布给其他可能遇到相同问题的人。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)