2014-07-02 40 views
0

值我有5个id's id1, id2,.. id5 选择字段,我需要检查(选择)的值不相等则突出绿色,如果相等,则强调红色 但看看疯狂的验证每场5次?是可能的使用特殊功能ir验证容易比:选择通过验证与jquery

if 
    if 
    if 
     if 

我不需要代码只是想法。

+1

为什么不ü尝试for循环中选择字段? – obayhan

+0

如果id1中的选定值不等于id2,id3 .. id5如果id2不等于id1 id3等 – Klapsius

+0

如果我理解的很好,您想验证您的5个字段都有不同的选定值吗? –

回答

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

+0

这个功能对我来说真棒。但是,如果值是1-1-1-1-1比红色,但是如果1-2-1-1-1绿色应该是红色。绿色只是1-2-3-4-5 – Klapsius

+0

对不起,我没有得到你。你能改述一下吗? –

+0

?怎么样?我不知道如何改进此功能 – Klapsius

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