#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;
}