Jquery ui MVC强制对一组元素进行jQuery验证
我用MVC4设计的表单有多个div,每个div中有许多元素。我的目标是在用户完成字段时打开/关闭div。但是,我希望对每个DIV使用不引人注目的验证,而不是整个表单。不单独检查每个元素是否可能?也许用一个DIV ID什么的?我不想构建这个庞大的函数来检查每个DIV中的每个元素,这样用户就可以移动到下一个DIV 我正在尝试,但它不起作用:Jquery ui MVC强制对一组元素进行jQuery验证,jquery-ui,asp.net-mvc-4,Jquery Ui,Asp.net Mvc 4,我用MVC4设计的表单有多个div,每个div中有许多元素。我的目标是在用户完成字段时打开/关闭div。但是,我希望对每个DIV使用不引人注目的验证,而不是整个表单。不单独检查每个元素是否可能?也许用一个DIV ID什么的?我不想构建这个庞大的函数来检查每个DIV中的每个元素,这样用户就可以移动到下一个DIV 我正在尝试,但它不起作用: var elems = []; var valid = true; ("#Contact").find('.text_input').each(funct
var elems = [];
var valid = true;
("#Contact").find('.text_input').each(function() {
elems.push(this.id);
}
for (var i = 0; i<= elems.length; i++) {
if ($("#" + elems[i]) != undefined) {
$("#form1").validate().element("#" + elems[i]))
if ($("#" + elems[i]).valid()) {
}
else {
valid = false;
}
}
}
var elems=[];
var valid=true;
(“#Contact”).find(“.text_input”).each(function(){
元素推(this.id);
}
对于(var i=0;i您可以使用Validator.element(element)
-验证单个控件,因此可以使用以下方法(您尚未发布视图html,因此无法为您编写实际代码)
在下一步按钮中,单击事件
选择中的所有控件
关联的div
-例如var controls=$(this)。最近的('div')。查找('input,textarea,select');
在$循环中,调用$(“form”).validate().element($(this));
如有必要,使用$(this.valid();
如果所有内容都有效,则隐藏当前div并显示下一个div
编辑(添加示例)
看法
剧本
$('button').click(function () {
var container = $(this).closest('.section');
var isValid = true;
$.each(container.find('input'), function () {
$('form').validate().element($(this));
if (!$(this).valid()) {
isValid = false;
return false;
}
});
if (isValid) {
container.next('.section').show().find('input').first().focus();
container.hide();
} else {
container.find('.error').text('please complete');
}
});
什么时候验证div中的元素?例如,当div中的最后一个元素失去焦点时,或者当您单击按钮显示下一个div时?在这种情况下,当用户单击next时,它调用一个函数来隐藏第一个div并显示第二个div。但是我想在显示第二个div之前检查第一个div中的元素?这有意义吗?检查我的编辑,让我知道为什么不起作用没有理由将其放入数组中。在var controls=…
之后,然后$。每个(控件、函数(索引、项){$(“#form1”).validate().element($(this));
-或者它可能需要是.element($(this)[0])
-未经测试不确定您能否为我写出函数?太晚了-我会看一看tommorow@StephenMuecke,很好的解决方案。非常简单,代码不多。
.section:not(:first-of-type) {
display:none;
}
$('button').click(function () {
var container = $(this).closest('.section');
var isValid = true;
$.each(container.find('input'), function () {
$('form').validate().element($(this));
if (!$(this).valid()) {
isValid = false;
return false;
}
});
if (isValid) {
container.next('.section').show().find('input').first().focus();
container.hide();
} else {
container.find('.error').text('please complete');
}
});