簡體   English   中英

根據純 JavaScript 中的第一個下拉選項更改第二個下拉選項

[英]Changing 2nd dropdown options based on first dropdown choice in plain JavaScript

鑒於此html:

<select id="fruits" name="fruits">
  <option selected>Please select a fruit</option>
  <option>Apple</option>
  <option>Mango</option>
  <option>Banana</option>
</select>
<select id="options" name="options">
  <option selected>--Select a fruit first--</option>
  <option>is sometimes green</option>
  <option>is sometimes yellow</option>
  <option>is sometimes blood red</option>
  <option>is sometimes sour</option>
  <option>is sometimes sweet</option>
  <option>is sometimes bitter</option>
</select>

如果我從第一個下拉菜單中選擇蘋果,只有選項

  • “有時是綠色的”,
  • “有時是血紅色的”,
  • “有時很酸”

應該可用。 其他人應該被刪除/隱藏。 我正在尋找僅 JavaScript 的解決方案; 我不知道 jQuery。

一個僅用於更改在 chrome 31 和 IE11 中測試的選擇選項的 javascript 演示

此 html 將函數setOption附加到onchange -事件。 根據 quirksmode的變化事件是錯誤的 因此,您可能需要修復/擴展以提高跨瀏覽器兼容性。

<select id="s1" onchange="setOptions()">
  <option>Pizza</option>
  <option>Pasta</option>
  <option>HotDogs</option>
</select>
<select id="s2">
  <option>Pizza 1</option>
  <option>Pizza 2</option>
  <option>Pizza 3</option>
</select>

在更改了第一個選擇s1的選定選項后,此 javascript 更改了第二個選擇s2的選項 - 觸發了 onchange 事件:

 function setOptions()
  {        
    document.getElementById('s2').options.length = 0; // remove all options

    var selIndex = document.getElementById("s1").selectedIndex;
    if(selIndex == 0)
      addAllOptions('s2', ["Pizza Diavolo","Pizza Veggie"]);
    else if(selIndex == 1){
      addAllOptions('s2', ["Pasta Napoli","Pasta Primavera"]);
    }
    else{
      addAllOptions('s2', ["Hot Dog Chilie King","Hot Dog Silent Wiener"]);
    }
  }

並添加選項

 function addAllOptions(selectID, values)
  {
    var arrayLength = values.length;
    for (var i = 0; i < arrayLength; i++) {
        appendOptionLast(selectID,values[i]);
    }
  }

可能還需要增強此功能以提高跨瀏覽器的兼容性。

  // see http://www.mredkj.com/tutorials/tutorial005.html      
  function appendOptionLast(selectID, num)
  {
    var elSel = document.getElementById(selectID);        
    var elOptNew = document.createElement('option');
    elOptNew.text = num;
    elOptNew.value = 'a_' + num;
          
    try {
      elSel.add(elOptNew, null); // standards compliant; doesn't work in IE
    }
    catch(ex) {
      elSel.add(elOptNew); // IE only
    }
  }

查看完整的演示

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM