我在一个加载局部视图并在对话框中显示它的函数中有以下Jquery代码:
ysjs.openCreateDialog = function() {
$.ajax({
url: '/yourthings/Create/',
type: 'GET',
success: function(result) {
$('#create-modal').html(result).dialog({
width: 700,
resizable: false,
modal: true,
buttons: {
"Create": function () {
$("#create-usr").validate();
if (!$("#create-usr").valid()) {
return false;
}
},
Cancel: function() {
$(this).dialog("close");
}
}
}).dialog('open');
},
});
};
在我的局部视图中,我还强制jquery验证重新解析DOM,如下所示:
<script type="text/javascript">
$(function () {
//allow the validation framework to re-prase the DOM
jQuery.validator.unobtrusive.parse();
});
</script>
当我单击Create
按钮时,由于return false
上的断点在firebug脚本视图中被点击,表单似乎被正确无效。
网站上的所有其他验证功能都很完美,所以我不会遗漏文件或设置来实际进行不显眼的验证工作,但在这种情况下显然存在一些问题,即摘要信息从未显示过。
如果我将相同的部分直接放在页面上,则所有验证都按预期进行,并在UI中显示消息。
我可以尝试确保向用户显示验证消息吗?
答案 0 :(得分:0)
我不确定这是多么有趣或是否有预期的行为,但我已经通过更改来解决这个问题:
jQuery.validator.unobtrusive.parse();
为:
jQuery.validator.unobtrusive.parse('#create-usr');
指定要解析的确切表单现在可以在对话框中的表单中正确显示验证摘要。