2013-03-28 2 views
0

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

Я думаю, что я сделайте это на полпути.

$("#left").focus(function() { 
    // Store the current value on focus, before it changes 
    previous = this.value; 
}).change(function() { 
    // Do soomething with the previous value after the change 
    var num1 = $("#left option:selected").text(); 

    if ($("#middle option:selected").text() == num1){ 
    $("#middle option:selected").text(previous) 
    } 

    if ($("#right option:selected").text() == num1){ 
    $("#right option:selected").text(previous) 
    }  
}); 

Вот ссылка на полную вещь: http://jsfiddle.net/U3WSz/

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

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

+0

ли вы посмотреть, что '.text()' делает? – Ian

ответ

1

jsFiddle

добавить атрибут значение опции как этого

<option value='2'>2</option> 

Js:

$("#left").focus(function() { 
    // Store the current value on focus, before it changes 
    previous = $(this).val(); 

    }).change(function() { 
    // Do soomething with the previous value after the change 
    var num1 = $("#left option:selected").val(); 

    if ($("#middle option:selected").val() == num1) { 
     // $('body').append(previous); 
     $("#middle").val(previous) 
    } 

    if ($("#right option:selected").val() === num1) { 
     $("#right").val(previous); 
    } 
}); 
+0

Спасибо. Это решило! – Matt

+0

Добро пожаловать ..! –

+0

Эй ... Я не знаю, почему, но после игры с ним, кажется, беспорядок. Ваш код имеет смысл, но он, похоже, не запускает его все время. Попробуйте сыграть с одной коробкой. Вы начнете видеть, как он дублирует себя. – Matt

0

Попробуйте

$("#left").focus(function() { 
    // Store the current value on focus, before it changes 
    previous = this.value; 
}).change(function() { 
    // Do soomething with the previous value after the change 
    var num1 = $("#left option:selected").text(); 

    if ($("#middle option:selected").text() == num1){ 
    $("#middle option[value='"+previous+"']").attr('selected','selected') 
    } 

    if ($("#right option:selected").text() == num1){ 
    $("#right option[value='"+previous+"']").attr('selected','selected') 
    }  
}); 

Этот код делает выбраны параметры, в #middle и #right выберите коробки, которые имеют value равно значению previous переменной.

+0

Просто используйте '$ (" # right "). Val (previous);' – Ian

+0

Фактически я только что понял, что OP не хочет оценивать на основе значения опций. Нет атрибута 'value' для'

+0

Ах, да, я вижу сейчас. – Ian

Смежные вопросы