2014-07-02 86 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