简体   繁体   English

下拉选项,具体取决于javascript中选中的单选按钮

[英]drop down options depending on the selected radio button in javascript

i have two radio buttons: in-campus and off-campus. 我有两个单选按钮:校园内和校园外。 when in-campus is selected the dropdown will have some options and when off-campus is selected there will be a different set of options. 选择“校园内”时,下拉菜单将具有一些选项;选择“校园外”时,将具有不同的选项集。 how can i do this in javascript? 我该如何在javascript中做到这一点?


i'm trying to use this. 我正在尝试使用它。 i have this code 我有这个代码

function setInCampus(a) { 
  if(a == "true") {  
setOptions(document.form.nature.options[document.form.nature.selectedIndex].value) } 
} 

function setOptions(chosen) 
{ 
//stuff 
} 

it won't work. 它不会工作。 what's wrong? 怎么了?

<form>
    <input type="radio" onclick="campus(0)" value="On" id="campus_on" />
    <label for="campus_on" />
    <input type="radio" onclick="campus(1)" value="off" />
    <label for="campus_off" />
    <select id="some_options">

    </select>
</form>
<script>
    function campus(type) {
        document.getElementById('some_options').innerHTML = type ?
            '<option>option 1</option><option>option 2</option>'
            :
            '<option>option 3</option><option>option 4</option>';
        }
    }
</script>
<form name="form" id="form" action="">  

<input type="radio" id="radioButton1" name="radioButton" value="in-campus" />
<label for="radioButton1">in-campus</label>
<input type="radio" id="radioButton2" name="radioButton" value="of-campus" />
<label for="radioButton2">off-campus</label>

<select name="noOptions" id="noOptions" style="display: none"> 
    <option value="Choose an Option" selected="selected">Choose an Option</option>
</select>

<select name="icOptions" id="icOptions" style="display: none"> 
    <option value="Choose an Option" selected="selected">Choose an in-campus option</option>
    <option value="icOption1">in-campus option 1</option>
    <option value="icOption2">in-campus option 2</option>
</select>

<select name="ocOptions" id="ocOptions" style="display: none"> 
    <option value="Choose an Option" selected="selected">Choose an off-campus option</option>
    <option value="ocOption1">off-campus option 1</option>
    <option value="ocOption2">off-campus option 2</option>
</select>

<select name="allOptions" id="allOptions" style="display: block"> 
    <option value="Choose an Option" selected="selected">Choose an Option</option>
    <option value="icOption1">in-campus option 1</option>
    <option value="icOption2">in-campus option 2</option>
    <option value="ocOption1">off-campus option 1</option>
    <option value="ocOption2">off-campus option 2</option>
</select>
</form>

<script>
window.document.getElementById("noOptions").style.display = "block";
window.document.getElementById("allOptions").style.display = "none";
function changeOptions() {
    var form = window.document.getElementById("form");
    var icOptions = window.document.getElementById("icOptions");
    var ocOptions = window.document.getElementById("ocOptions");

    window.document.getElementById("noOptions").style.display = "none";

    if (form.radioButton1.checked) {
        ocOptions.style.display = "none";
        icOptions.style.display = "block";
        icOptions.selectedIndex = 0;
    } else if (form.radioButton2.checked) {
        icOptions.style.display = "none";
        ocOptions.style.display = "block";
        ocOptions.selectedIndex = 0;
    }

}
window.document.getElementById("radioButton1").onclick = changeOptions;
window.document.getElementById("radioButton2").onclick = changeOptions;
</script>

First of all, make form usable and accessible even with JavaScript is disabled. 首先,即使禁用JavaScript,也要使表单可用和可访问。 Create an HTML markup that contains the dropdown lists for the radio buttons. 创建一个HTML标记,其中包含单选按钮的下拉列表。

Then when JavaScript is enabled, hide element the dropdown elements on document load, and attach and event handler to radio buttons, so when of one them was checked, toggle visibility of the proper dropdown list. 然后,当启用JavaScript时,在文档加载时隐藏元素dropdown元素,并将附件和事件处理程序附加到单选按钮,因此选中其中一个时,切换适当的下拉列表的可见性。

Radio buttons can have an onClick handler. 单选按钮可以具有onClick处理程序。

<INPUT TYPE="radio" NAME="campustype" VALUE="incampus" onClick="setInCampus(true)">in-campus
<INPUT TYPE="radio" NAME="campustype" VALUE="offcampus" onClick="setInCampus(false)">off-campus

You could just define both 's in the code, and toggle visibility with javascript. 您可以只在代码中定义两者,然后使用javascript切换可见性。 Something like this: 像这样:

<html>
<head>

<script type="text/javascript">
function toggleSelect(id)
{
    if (id == 'off')
    {
          document.getElementById('in-campus').style['display'] = 'none';
          document.getElementById('off-campus').style['display'] = 'block';
    }

    if (id == 'in')
    {
          document.getElementById('off-campus').style['display'] = 'none';
          document.getElementById('in-campus').style['display'] = 'block';
    }
}
</script>
</head>
<body>

<select id='in-campus'>
<option>a</option>
</select>

<select id='off-campus' style='display: none;'>
<option>b</option>
</select>

<br />

<input type='radio' name='campustype' value='in' onclick="toggleSelect('in');" checked='1' /><label for='incampus'>In-campus</label><br />

<input type='radio' name='campustype' value='off' onclick="toggleSelect('off');" /><label for='offcampus'>Off-campus</label>

</body>
</html>

A prettier variant of this approach would not require support for javascript, it would gracefully fallback on basic html. 这种方法的更漂亮的变体将不需要对javascript的支持,它将优雅地回退到基本html上。

如果您需要从数据库或其他内容中获取选项,则可以考虑使用AJAX。

<html>
    <head>
        <script language="javascript">
            var current = false;
            function onChange()
            {
                var rad = document.getElementById("radIn").checked;
                if(rad == current)
                    return;
                current = rad;
                var array = rad ? ["in1","in2","in3","in4","in5"] : 
                    ["out1","out2","out3","out4","out5"];
                var sel = document.getElementById("dropDown");
                sel.innerHTML = "";
                var opt;
                for each(var k in array)
                {
                    //alert(k + " asdsd");
                    opt = document.createElement("option");
                    opt.innerHTML = k;
                    sel.appendChild(opt);
                }
            }
        </script>
    </head>
    <body onload="onChange();">
        <input type="radio" value="in" name="campus" onclick="onChange()" 
            id="radIn" checked="true"/>
        <label for="radIn">In Campus</label>
        <br/>
        <input type="radio" value="out" name="campus" onclick="onChange()" 
        id="radOut"/>
        <label for="radOut">Out Campus</label>
        <br/>
        <select id="dropDown"/>
    </body>
</html>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 如何在JavaScript中选择单选按钮时根据下拉列表在文本框中显示相应的值? - How to display the corresponding values in the text box depending on drop down list on selecting radio button in javascript? 根据另一个选定的下拉列表更改下拉列表中的选项 - Change options in a drop-down list depending on another selected drop-down list 使用Jquery获取选中的单选按钮和选定的下拉值 - Get checked Radio Button and Selected Drop down values using Jquery 如何根据选择的单选按钮更改下拉列表的值? - How to change value of a drop down list depend on selected radio button? 选择单选按钮时显示/隐藏下拉菜单 - Show/hide drop down when radio button is selected JavaScript-选择选项后,在下拉菜单中隐藏选项 - JavaScript - Hide Options in drop down menu when option is selected 如何使用JavaScript在下拉列表中获取所有选定的选项? - How to get all the selected options in a drop down list with JavaScript? JavaScript:3个单选按钮,第3个具有下拉菜单,选择任何一个时都有“提交”按钮,然后提供消息 - JavaScript: 3 radio buttons, 3rd one has drop down menu and when any are selected have submit button which then gives message jQuery / JavaScript-单选按钮上的“隐藏/显示”下拉框待处理 - jQuery/JavaScript - Hide / Show Drop down box pending on Radio Button 向上/向下滑动div,具体取决于所选的收音机 - Slide divs up/down depending on the radio selected
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM