我使用Ajax.BeginForm进行不显眼的验证。我想让用户选择使用最少数量的验证字段(可能为零)保存数据,但允许在空时保存一些必填字段。
我认为我的要求是:
我可以通过在“document ready”
中添加以下内容来捕获提交事件并验证表单$(document).ready(function () {
$('#submit-11').click(function () {
if (!$("#form0").valid()) {
alert("woops");
return false;
}
return true;
});
我现在的问题是如何识别哪些字段验证失败以及失败的原因。
我在谷歌上找不到任何东西(虽然这可能是我的搜索技能而不是问题的函数。)
提前致谢。
答案 0 :(得分:1)
你试过吗
event.preventDefault();
提交点击后? http://api.jquery.com/event.preventDefault/
现在关于你更大的问题。我认为你可以用jquery完成所有这些工作 这是一个例子
$(document).ready(function () {
//form validation rules, including custom rules you'd like
$("#form").validate({
rules: {
fieldOne: { required: true },
fieldTwo: { required: function () { /*custom validation*/return true; } }
},
messages: {
fieldOne: { required: "error" },
fieldTwo: { required: "error" }
}
});
//handle submit click
$("#btnSubmit").click(function (event) {
event.preventDefault(); //stops form from submitting immediately
if ($("#form").valid()) { //perform validation
//submit your data if valid
$.post("/your/action", $form.serialize(), function (data) {
//do something with the result
});
}
});
});
更新: 所以也许你应该这样做,当你将validate处理程序添加到表单时,你可以实现submitHandler和invalidHandler。 现在您应该关注的是invalidHandler
$(document).ready(function(){
$("#form").validate({
rules : {
field : {required : true}
},
messages : {
field : {required : ""}
},
submitHandler: function(form) {
form.submit(); //if all is good
},
invalidHandler: function(form, validator){
console.log(validator.errorList); //if something went wrong
}
});
此函数接收验证器,验证器依次具有包含失败的所有字段(和消息)的errorList。 例如,使用chrome的开发人员工具测试此代码,您将看到errorList中的内容。