jQuery - 选择一个包含多个类的div,但只搜索其中两个

时间:2011-09-13 17:03:10

标签: javascript jquery

我的标题可能有点不清楚,所以我会尝试更好地解释一下。

我有一个注册表单,我正在检查是否填写了所有必填字段。对于表单的一个特定部分,我有一个包含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();但这似乎是不必要的,如果我的模板要改变,它就不是很灵活。

1 个答案:

答案 0 :(得分:1)

不,那不是你的问题。您不需要在选择器中拥有所有类,只需要其中两个类就可以正常工作。演示:jsfiddle.net/Guffa/fj95m/

问题出在else函数的filledElement语句中。如果填写了任何字段,则删除错误消息元素。