我有以下部分视图(我删除了一些格式只是为了在这个论坛上保持简单)。我的表单标签位于父页面上,对话框中的项目是该表单的一部分。 这是一种强类型的局部视图。我在我的模型中将密码和confirmPassword字段定义为[必需]。
@Html.LabelFor(m => m.password)
<a href="#" onclick="openResetPasswordDialog();">Reset Password</a>
<div id="dialogResetPassword" title="Reset Password">
<p>Reset password for user: @Model.userId</p>
@Html.LabelFor(m => m.password)
@Html.PasswordFor(m => m.password)
@Html.ValidationMessageFor(m => m.password)
<div class="rowEnd"></div>
@Html.LabelFor(m => m.confirmPassword)
@Html.PasswordFor(m => m.confirmPassword)
@Html.ValidationMessageFor(m => m.confirmPassword)
<div class="rowEnd"></div>
</div>
我有以下javascript用于初始化对话框:
function initializeResetPasswordDialog() {
$(resetPasswordDialogId).dialog(
{
autoOpen: false,
autoResize: true,
buttons: {
Ok: function () {
if (!($('#userForm').valid())) {
return false;
}
//more code goes here ...
closeResetPasswordDialog();
},
Cancel: function () {
closeResetPasswordDialog();
}
}
});
}
我的对话框初始化,打开和关闭很好,但是当我尝试检查对话框中项目的有效性时,我总是“有效”。
我不想提交整个表单,只需在“确定”按钮上提交密码和确认密码字段,然后激活我的验证。有关如何做到这一点的任何建议吗?
答案 0 :(得分:0)
好的,所以我通过将以下函数添加到jQuery对话框的open参数来解决它:
open: function () {
$(this).parent().appendTo("#userForm");
}
我注意到在初始化jQuery对话框时,即使它在我的表单中,当在浏览器中呈现HTML页面时,对话框div也移到了表单之外。要使验证有效,输入必须在表单中。
我希望这篇文章能帮助其他人!