2017-02-13 144 views
0

我有一个与JS相关的问题。我很新!JS - 禁用选择元素

我已经[组合框]有n个元素。

我也有功能称为“的GetValues()”,它返回列表框元素如:眼下

array (size=5) 
'value' => string '...' (length=25) 
'level' => int 1 

,用户将看到的元素(值)的组合框。一切工作完美,但我想做JS功能,这将做以下事情:

当用户从组合框中单击一个元素(选择),从列表框中的其他元素,'级别'较低(<)得到自动禁用(不可能点击)。

我想是这样的,但停了下来,因为我主要集中在PHP和刚学JS现在:

<script type="text/javascript"> 
function JS(){ 
if(document.getElementById('types').value) 
{ 
var id = document.getElementById('types'); 
for (var i = 0; i < id.length; i++) { 
if(allelements.level < selected.level) 
? op[i].disabled = true 
: op[i].disabled = false ; 
} 

电流功能是用伪代码[还没有完成。 也许有人可以为我想要的编写正确运行的js代码。我不知道如何访问数组的值'level'等等。帮助将不胜感激!

+0

尝试'class'。 'id'是唯一的 – prasanth

+0

'document.getElementById('types')'一次只返回1个元素。 –

回答

1

由于这个问题是问的代码被写入,这里是什么样子:

var select = document.getElementById('select'); 
 

 
select.addEventListener('change', function() { 
 
    var index = select.selectedIndex; 
 
    var children = select.children; 
 
    
 
    for (var i = 0; i < children.length; i++) { 
 
     if (i <= index) { 
 
      children[i].removeAttribute('disabled'); 
 
     } else { 
 
      children[i].setAttribute('disabled', 'disabled'); 
 
     } 
 
    } 
 
});
<select id="select"> 
 
    <option>One</option> 
 
    <option>Two</option> 
 
    <option>Three</option> 
 
    <option>Four</option> 
 
    <option>Five</option> 
 
    <option>Six</option> 
 
</select>

基本上,我们采取了选择的选项的索引,检查每个孩子的指数是更少还是更大,并根据该属性设置禁用属性。