使用jquery按值进行选择验证

时间:2014-07-02 12:38:42

标签: javascript jquery html

我有5个选择字段id's id1, id2,.. id5 我需要检查值(选中)是否不相等然后突出显示绿色,如果相等,则突出显示红色 但看起来疯狂验证每个领域5次?是有效使用特殊功能,而不是用以下方式验证:

if
  if 
    if
      if

我不需要代码只是想法。

2 个答案:

答案 0 :(得分:1)

您可以遍历每个选择以比较值

$("select").change(function () {
    flag = false;
    var value = $(this).val();
    $("select").each(function () {
        if ($(this).val() != value)
            flag = true;
    });
    if (flag)
        $("select").css("color", "red");
    else
        $("select").css("color", "green");
});

Demo

修改

$("select").change(function () {
    var flag = true;
    $("select").each(function () {
        var outer = this;
        $("select").not(outer).each(function () {
            if ($(outer).val() == $(this).val()) {
                flag = false;
                return false;
            }
        });

    });
    if (flag)
        $("select").css("color", "green");
    else
        $("select").css("color", "red");

});

Updated Fiddle

新更新

我已经简化了这样的代码。如果你喜欢这个

,你不必使用嵌套循环
$("select").change(function () {
    var flag = true;
    $("select").each(function () {
        if ($("select").find("option:selected[value=" + this.value + "]").length > 1) {
            flag = false;
            return false;
        }
    });
    if (flag)
        $("select").css("color", "green");
    else
        $("select").css("color", "red");
});

Updated Fiddle

答案 1 :(得分:1)

试试这个..

$("select").change(function(){
    var selected    =   []; 
    var valiSel     =   [];

    $('select > option:selected').each(function() {
        if($(this).val() != 0){
            selected.push( $(this).val() );
        }
        valiSel.push( $(this).val() );

    });
    var unique = unique12(selected);
    var uniqueLength = unique.length;   
    var valiSelUnique = unique12(valiSel);  
    var selectedLength = selected.length;   

    if(  unique.length !=  selected.length ){
    alert( 'Two Selected value cannot be same' );
    return false;
    }       

    //return true;

});

function unique12(sel) {
    var r = new Array();
    o:for(var i = 0, n = sel.length; i < n; i++)
    {
        for(var x = 0, y = r.length; x < y; x++)
        {
                if(r[x]==sel[i])
                {
                //alert('this is a DUPE!');
                        continue o;
                }
        }
        r[r.length] = sel[i];
    }
    return r;
}

DEMO