我的标题可能有点不清楚,所以我会尝试更好地解释一下。
我有一个注册表单,我正在检查是否填写了所有必填字段。对于表单的一个特定部分,我有一个包含7或8个类的div,如果我正在寻找其中两个,我需要显示div。
以下是我正在尝试做的事情,但是没有用...(这在使用两个特定的类时会起作用,但是当额外的类也存在时也不行。)
HTML
<div class="errors last first address city state zip country email phone" style="display: none;"><span class="error">Required values are missing from your contact information.</span></div>
的jQuery
$('form#finalize').submit(function() {
var required = ['hostname','first','last','address','city','state','zip','country','email','phone'];
var result = true;
$.each(required, function(index, value) {
if(filledElement(value) == false){
$(".item.errors").show().fadeOut(8000);
result = false;
}
});
if(checkElement('tos') == false){
$(".item.errors").show().fadeOut(8000);
return false;
}
return result;
});
function filledElement(elem){
if( isSet(elem) != true ) {
$('.'+elem+'.errors').show();
return false;
}
else {
$('.'+elem+'.errors').remove();
return true;
}
}
所以再一次澄清..问题在函数filledElement中,当它显示错误时,'。'+ elem +'。errors'正在寻找一个只包含这两个类的元素,而不是寻找对于可能包含这两个类及更多类的元素。
有什么解决方法吗?我可以投入类似的东西......
if(item in required).. $('。errors.first.last.address.phone ... etc')。show();但这似乎是不必要的,如果我的模板要改变,它就不是很灵活。
答案 0 :(得分:1)
不,那不是你的问题。您不需要在选择器中拥有所有类,只需要其中两个类就可以正常工作。演示:jsfiddle.net/Guffa/fj95m/
问题出在else
函数的filledElement
语句中。如果填写了任何字段,则删除错误消息元素。