Javascript 结合MicrosoftMvcJQueryValidation和Ajax提交
在我希望通过Ajax调用提交数据的表单中,尝试应用MS JQuery验证时遇到了问题。我使用DataAnnotations和MicrosoftMvcJQueryValidation.js库来执行客户端和服务器端验证 服务器验证工作得很好,我正试图通过Javascript 结合MicrosoftMvcJQueryValidation和Ajax提交,javascript,jquery,asp.net-mvc,jquery-validate,Javascript,Jquery,Asp.net Mvc,Jquery Validate,在我希望通过Ajax调用提交数据的表单中,尝试应用MS JQuery验证时遇到了问题。我使用DataAnnotations和MicrosoftMvcJQueryValidation.js库来执行客户端和服务器端验证 服务器验证工作得很好,我正试图通过 <% Html.EnableClientValidation(); %> <%= Html.ValidationSummary("Create was unsuccessful. Please correct t
<% Html.EnableClientValidation(); %>
<%= Html.ValidationSummary("Create was unsuccessful. Please correct the errors and try again.") %>
<div id="formContainer">
<% using(Html.BeginForm()){ %>
<table class="formTable" width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td><label for="Description">Description:</label></td>
<td><%= Html.TextBox("Description", Model.Description) %>
<%= Html.ValidationMessage("Description", "*") %></td>
</tr>
<tr>
<td> </td>
<td>
<%=Html.Button("cancelBtn","Cancel")%>
<input id='createBtn' class='button' type='button' value='Create' />
</td>
</tr>
</table>
<% } %>
</div>
执行客户端验证,但不执行ajax调用,表单通过回发提交
有没有办法让它们在不更改jQuery.validate库的情况下协同工作
可能吗?我是不是用了错误的方法
提前感谢我没有找到任何解决方案,如何在不修改表单的情况下使用MicrosoftMvcJQueryValidation.js提交ajax表单。以下是我的解决方法: 1) 在“
MicrosoftMvcJQueryValidation.js
”文件中添加以下代码,就在“表单验证(选项);
”函数中的“启用客户端验证(验证上下文)
”之前:
2) 使用此js函数将自己的选项添加到.validate()
方法:
function setFormValidationOptions(formId, options) {
if (typeof (formId) == undefined || formId == null || typeof (options) == undefined || options == null) return;
if (window.mvcClientValidationMetadata) {
for (i = 0; i < window.mvcClientValidationMetadata.length; i++)
if(window.mvcClientValidationMetadata[i].FormId == formId)
window.mvcClientValidationMetadata[i].validationOptions = options;
}
}
请记住,您可以添加任何有效的for.validate()函数。必须同时加载jquery.validate和jquery.forms插件
希望有帮助。绝对有帮助,谢谢。我讨厌编辑MicrosoftMvcJQueryValidation.js,但我现在终于能够通过DataAnnotation利用客户端验证,而不必依赖他们的Ajax.BeginForm()方法,也不需要所有额外的MicrosoftAjax处理程序。谢谢,这对我来说很有用。我真的不想改变MicrosoftMvcJQueryValidation.js
$("input#createBtn").click(function() {
theform = $(this).closest("form");
if (theform.validate().form()) {
jQuery(theform).ajaxSubmit({
target: "#formContainer"
});
}
else {
return false;
}
});
if (typeof (validationContext.validationOptions) != undefined && validationContext.validationOptions != null) $().extend(options, validationContext.validationOptions);
function setFormValidationOptions(formId, options) {
if (typeof (formId) == undefined || formId == null || typeof (options) == undefined || options == null) return;
if (window.mvcClientValidationMetadata) {
for (i = 0; i < window.mvcClientValidationMetadata.length; i++)
if(window.mvcClientValidationMetadata[i].FormId == formId)
window.mvcClientValidationMetadata[i].validationOptions = options;
}
}
valOpt = {
submitHandler: function(form) {
$(form).ajaxSubmit({
target: "#output"
});
}
};
setFormValidationOptions("myFormId", valOpt);
$("input#createBtn").click(function() {
theform = $(this).closest("form");
if (theform.validate().form()) {
jQuery(theform).ajaxSubmit({
target: "#formContainer"
});
}
else {
return false;
}
});