Javascript 使用jquery按值进行选择验证

Javascript 使用jquery按值进行选择验证,javascript,jquery,html,Javascript,Jquery,Html,我有5个带有id的id1、id2、,。。id5 我需要检查值(所选)是否不相等,然后亮显绿色,如果相等,则亮显红色 但看起来很疯狂,每个字段验证5次吗?是否可以使用比以下功能更简单的特殊功能: if if if if 我不需要代码,只需要一个想法。您可以循环通过每个选择来比较值 $("select").change(function () { flag = false; var value = $(this).val(); $("select"

我有5个带有
id的id1、id2、,。。id5
我需要检查值(所选)是否不相等,然后亮显绿色,如果相等,则亮显红色 但看起来很疯狂,每个字段验证5次吗?是否可以使用比以下功能更简单的特殊功能:

if
  if 
    if
      if

我不需要代码,只需要一个想法。

您可以循环通过每个选择来比较值

$("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");
});

编辑

$("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");

});

新更新

我将代码简化为这样。如果您喜欢这样做,就不必使用嵌套循环

$("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");
});
试试这个

$("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;
}
$(“选择”).change(函数(){
所选var=[];
var valiSel=[];
$('select>option:selected')。每个(函数(){
如果($(this).val()!=0){
已选择.push($(this.val());
}
valiSel.push($(this.val());
});
var unique=unique12(选中);
var uniqueLength=unique.length;
var valiSelUnique=unique12(valiSel);
var selectedLength=selected.length;
if(unique.length!=selected.length){
警报(“两个选定值不能相同”);
返回false;
}       
//返回true;
});
功能唯一12(sel){
var r=新数组();
o:for(变量i=0,n=sel.length;i

为什么不在选择字段中尝试循环?如果id1中的选定值与id2、id3不相等。。id5如果id2不等于id1 id3 etcIf我很清楚,你想验证你的5个字段都有不同的选择值吗?@Bartdude YES different如果你不想写几个
if
语句或一个包含许多
的长语句,那么你只需要尝试一个循环。试着使用for循环,如果你觉得这个函数对我来说太棒了,那就回来吧。但如果值为1-1-1-1-1,则应为红色,但如果值为1-2-1-1-1,则绿色应为红色。格林刚才1-2-3-4-5对不起,我没听懂你的话。你能重新措辞吗??怎样?我不知道如何改进这个功能我的意思是,你能详细说明一下需要什么吗?我想检查选择菜单中的值是否不等于高亮显示绿色,如果红色的exmp值1-2-3-4-5为绿色,但1-2-3-4-4或1-1-1-1-1或1-1-2-1-1为红色