2016-03-25 3 views
0

У меня есть два выпадающих меню. Выпадающий список для продукта 1 и раскрывающийся список для продукта 2. Выпадающие значения представляют собой порядок важности.Выпадающее меню Force не имеет одинаковых значений

Например: enter image description here

Для продукта 1, если выбрать Order 1, затем 2 продукта выпадающий должны автоматически устанавливается на заказ 2. (результат Итоговом А)

Если я должен был начаться с Продукта 2 и установить его выпадающее значение для заказа 1, тогда выпадающее меню продукта 1 должно автоматически устанавливаться на заказ 2. (результат результата B)

Я нашел пример, где значения в выпадающем списке будут отключены после его выбора. Я не смотрю на такое поведение, так как у пользователя может быть свобода сбросить свой выбор, поэтому мне нужно, чтобы все ценности были доступны в любое время.

Событие on Change должно просто установить правильные значения в соответствующем выпадающем меню.

До сих пор (я не так много), я следующее:

<select id="drp1" name="drp1" class="drp"> 
    <option value="1">Order 1</option> 
    <option value="2">Order 2</option> 
</select> 

<select id="drp2" name="drp2" class="drp"> 
    <option value="1">Order 1</option> 
    <option value="2">Order 2</option> 
</select> 

$("select.drp").on('change', function() { 
    var val = $(this).val(); 
    console.log(val); 

    //Figure out which dropdown triggered the change event. 
    //Let its current value selected but now change the dropdown that didn't triggere the change event with another value 
}); 
+0

Вы можете использовать $ (это) .attr ("ID"), чтобы выяснить, какие выпадающий вызвал событие –

ответ

0

Это то, что вы имеете в виду?

$("select.drp").on('change', function() { 
 
    
 
    var selectedDropDown = $(this).attr("id"); //get the ID of the currently selected drop down 
 
    
 
    var selectedValue = $(this).val(); //get the value of the currently selected drop down 
 
    
 
    var otherDropDown = (selectedDropDown == "drp1") ? "drp2" : "drp1"; //get the id of the other drop down 
 
    
 
    var otherValue = (selectedValue == 1) ? 2 : 1; //get the value that we want the other drop down to be 
 
    
 
    $("#" + otherDropDown).val(otherValue); //set the other drop down to the opposite of the current drop down. 
 
    
 
    
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<select id="drp1" name="drp1" class="drp"> 
 
    <option value="1">Order 1</option> 
 
    <option value="2">Order 2</option> 
 
</select> 
 

 
<select id="drp2" name="drp2" class="drp"> 
 
    <option value="1">Order 1</option> 
 
    <option value="2">Order 2</option> 
 
</select>

+0

Да, это то, что я имел в виду. Кстати ... в маловероятном случае, когда появится третий выпадающий список, не могли бы вы узнать, как сделать это более общим, а только проверять наличие двух выпадающих списков? Спасибо вам, кстати, – Vlince

+0

Нужно знать, какую логику ему нужно следовать, т. Е. Если я выберу вариант 1 в раскрывающемся списке 1, тогда выпадающее меню 2 будет вариантом 2 или 3 или 4 и должно выпадающим 3 быть 2 или 3 или 4? Если вы хотите опубликовать сценарий, я могу предложить некоторые рекомендации. –

+0

Я понимаю, что вы имеете в виду ... когда пользователь выбирает значение в dropdown1, невозможно решить для него, что будет выбранным значением в dropdown2 или dropdown3 ... что имеет смысл. Но ... как только он выберет элемент в выпадающем меню 2, только тогда будет возможно предварительно выбрать dropdown3, так как это последний выпадающий список. Вы знаете, где я мог бы найти такой пример? – Vlince

1

Итак, логика.

на документе готовы, вы делаете второй блок выбора до заказать 2. Как только пользователь щелкнет, он обнаружит, какое выпадающее меню выбрано, и примените другое значение к выпадающему меню, которое не выбрано.

$(document).ready(function(){ 
 
    $('#drp2').val(2) 
 
$("select.drp").on('click', function() { 
 
    var val = $(this).val(); 
 
    console.log(val); 
 
    if(val == "1") { 
 
     $(".drp").not(this).val(2); 
 
    } 
 
    else { 
 
     $(".drp").not(this).val(1); 
 
    } 
 
}); 
 
    });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<select id="drp1" name="drp1" class="drp"> 
 
    <option value="1">Order 1</option> 
 
    <option value="2">Order 2</option> 
 
</select> 
 

 
<select id="drp2" name="drp2" class="drp"> 
 
    <option value="1">Order 1</option> 
 
    <option value="2">Order 2</option> 
 
</select>

+0

Да, мне тоже нравится это решение с .not(). Кстати, я не отмечал ваш ответ как правильный не потому, что его неправильно, наоборот, но потому, что Грэм Ричи ответил первым. Вот почему. Но спасибо, что показал мне это, мне это нравится. – Vlince

+0

haha ​​nvm. Это причина, почему я люблю jQuery и кодирование. Многие методы позволяют решить одну проблему. :) –

0

Я просто подготовить пример для вас, пожалуйста, проверьте ниже скрипку.

JSFiddle

Вот код:

$("select.drp").on('change', function() { 
    var val = $(this).val(); 
    console.log(val); 
    var selectedid=$(this).attr("id"); 

    var selectedIndex = $("select#"+selectedid).prop('selectedIndex'); 
// alert(selectedIndex); 
    if(selectedid=="drp1") 
    { 
     if(selectedIndex==0) 
     { 
     $("select#drp2").prop('selectedIndex',1); 
     } 
     else 
     { 
     $("select#drp2").prop('selectedIndex',0); 
     } 

    } 
    else 
    { 
    if(selectedIndex==0) 
     { 
     $("select#drp1").prop('selectedIndex',1); 
     } 
     else 
     { 
     $("select#drp1").prop('selectedIndex',0); 
     } 

    } 

    //Figure out which dropdown triggered the change event. 
    //Let its current value selected but now change the dropdown that didn't triggere the change event with another value 
}); 
Смежные вопросы