2013-03-10 2 views
0

У меня есть массив данных, который используется для заполнения трех выпадающих списков, <select>. Мой вопрос заключается в том, как удалить те же значения из массива (не самого массива, а удалить (или) отключить одно и то же значение из раскрывающегося списка)?Удалить значение из массива данных

Например:

data = { 
firstbox_a: ['grpA_1','grpA_2','grpA_3','grpA_4'], 
firstbox_b: ['grpB_1','grpB_2','grpB_3','grpB_4'], 
grpA_1: ['y','n','un','st'], 
grpA_2: ['y','n','un','st'], 
grpA_3: ['y','n','un','st'], 
grpA_4: ['y','n','un','st'], 
grpB_1: ['a','b','avg','unc'], 
grpB_2: ['a','b','avg','unc'], 
grpB_3: ['a','b','avg','unc'], 
grpB_4: ['a','b','avg','unc'] 
} 

grpA_1 к grpA_4 имеют одинаковые значения. Если я выбираю «y» для grpA_1, «y» не может быть выбран, либо отключив, либо удалив значение от grpA_2 до grpA_4.

+0

Я предполагаю, что это Javascript? – christopher

ответ

0

Одно решение, которое приходит на ум, может быть:

Приложить событие к выбору пункта в выпадающем списке.

В случае добавления функции, которая IF:
Любой из выпадающих списков был выбран с тем же значением.
Предотвращение по умолчанию.

Пример

$('.target').change(function() { 
    // Your code goes in here :) 
}); 
+0

благодарит Криса за помощь. Я фактически использовал (планирование) jquery (я должен был указать). единственная проблема, с которой я сталкиваюсь при реализации этого, - это выключение, которое активируется (заполняется) массивом значений, основанным на выборе из предыдущего раскрывающегося списка. – user1648449

+0

В JQuery это на самом деле очень просто. Я отвечу за свой ответ. – christopher

0

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

Этот код создаст два списка. Если во втором списке выбрана опция, элемент в первом списке с тем же индексом также отключен.

<!DOCTYPE html> 
<html> 
<head> 
<script> 
function byId(e){return document.getElementById(e);} 
function newEl(tag){return document.createElement(tag);} 
function newTxt(txt){return document.createTextNode(txt);} 
function toggleClass(element, newStr) 
{ 
    index=element.className.indexOf(newStr); 
    if (index == -1) 
     element.className += ' '+newStr; 
    else 
    { 
     if (index != 0) 
      newStr = ' '+newStr; 
     element.className = element.className.replace(newStr, ''); 
    } 
} 
function forEachNode(nodeList, func) 
{ 
    var i, n = nodeList.length; 
    for (i=0; i<n; i++) 
    { 
     func(nodeList[i], i, nodeList); 
    } 
} 

window.addEventListener('load', mInit, false); 


function onList2Changed(list2_Element, list1_Element) 
{ 
    var i; 

    for (i=0; i<list1_Element.options.length; i++) 
    { 
     if (i == list2_Element.selectedIndex) 
      list1_Element.options[i].setAttribute('disabled', 'true'); 
     else 
      list1_Element.options[i].removeAttribute('disabled'); 
    } 
} 

function mInit() 
{ 
    var opt, mSel1, mSel2; 
    var i, numOpts = 10; 

    mSel1 = newEl('select'); 
    for (i=0; i<numOpts; i++) 
    { 
     opt = newEl('option'); 
     opt.appendChild(newTxt("boxA: " + (i+1))); 
     mSel1.appendChild(opt); 
    } 
    mSel1.setAttribute('size', i); 
    document.body.appendChild(mSel1); 

    mSel2 = newEl('select'); 
    for (i=0; i<numOpts; i++) 
    { 
     opt = newEl('option'); 
     opt.appendChild(newTxt("disable BoxA option: " + (i+1))); 
     mSel2.appendChild(opt); 
    } 
    mSel2.addEventListener('change', myFunc); 

    function myFunc() 
    { 
     onList2Changed(mSel2, mSel1); 
    } 
    document.body.appendChild(mSel2); 
} 

</script> 
<style> 
</style> 
</head> 
<body> 
</body> 
</html> 
+0

спасибо за помощь. его фактически три списка. firstbox_a и _b - одно выпадающее меню. grpA 1-4 и grpB 1-4 - это второе раскрывающееся меню. значения (y, n, avg ... и т. д.) являются третьим выпадающим списком. его третий выпадающий список, который имеет соответствующие значения, отключается/удаляется. Поэтому, если «avg» выбран один раз, «avg» не может быть выбран снова. – user1648449

+0

Не беспокойтесь. Я прочитал ваш комментарий выше примерно 4 или 5 раз, но мне жаль сообщить, что я не могу сделать из него ни головы, ни хвосты, то есть я до сих пор не могу понять, как данные *** ** * объект соответствует данным, которые хранятся в каждом списке. Если вы отредактируете свой вопрос, включив в него код, заполняющий три списка, я предоставил вам более полезный ответ. :) – enhzflep

+0

@PSCoder - +1 за то, что он ребяческий и предсказуемый. Я понял, что, скорее всего, вы запустили это более 25 минут назад. Вы просто продолжаете петь. Это, очевидно, хорошо работает для вас до сих пор! – enhzflep

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