проверка выборок по значению с помощью jquery

#javascript #jquery #html

#javascript #jquery #HTML

Вопрос:

У меня есть 5 полей выбора с id's id1, id2,.. id5 , и мне нужно проверить, не равны ли значения (выбранные), затем выделите зеленым, а если равны, то выделите красным, но выглядит ли сумасшедшим проверять каждое поле 5 раз? возможно ли использовать специальные функции для проверки проще, чем с:

 if
  if 
    if
      if
  

Мне не нужен код, просто идея.

Комментарии:

1. Почему бы вам не попробовать for-loop в полях выбора?

2. если выбранное значение в id1 не равно id2, id3.. id5, если id2 не равно id1 id3 и т. Д

3. Если я правильно понимаю, вы хотите подтвердить, что все ваши 5 полей имеют разные выбранные значения?

4. @Bartdude ДА, отличается

5. тогда вам просто нужно попробовать с циклом, если вы не хотите писать несколько if операторов или длинный оператор со многими AND и OR . Попробуйте использовать цикл for, а затем вернитесь, если вы застряли

Ответ №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");
});
  

ДЕМОНСТРАЦИЯ

Редактировать

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

Обновленная скрипка

Комментарии:

1. эта функция для меня потрясающая. Но если значения 1-1-1-1-1 больше, чем красные, но если 1-2-1-1-1 зеленый должен быть красным. зеленый только тогда 1-2-3-4-5

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 красные

Ответ №2:

Попробуйте это..

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

ДЕМОНСТРАЦИЯ