【问题标题】:Hide/show the selected option on a secondary select在辅助选择上隐藏/显示所选选项
【发布时间】:2012-11-21 16:31:11
【问题描述】:

我有两个具有不同 ID 的 <select> 元素。

当用户从第一个选择框中选择一个值时,我希望第二个选择框只显示连接的值。

我的代码:

<select id="ExtraField_1" name="ExtraField_1">
    <option value="1">test1</option>
    <option value="2">test2</option>
    <option value="3">test3</option>
    <option value="4">test4</option>
    <option value="5">test5</option>
    <option value="6">test6</option>
    <option value="7">test7</option>
    <option value="8">test8</option>
    <option value="9">test9</option>
    <option value="10">test10</option>
    <option value="11">test11</option>
    <option value="12">test12</option>
</select>
<select id="ExtraField_2" name="ExtraField_2">
    <option value="1">test1</option>
    <option value="2">test2</option>
    <option value="3">test3</option>
    <option value="4">test4</option>
    <option value="5">test5</option>
    <option value="6">test6</option>
    <option value="7">test7</option>
    <option value="8">test8</option>
    <option value="9">test9</option>
    <option value="10">test10</option>
    <option value="11">test11</option>
    <option value="12">test12</option>
    <option value="13">test13</option>
    <option value="14">test14</option>
    <option value="15">test15</option>
    <option value="16">test16</option>
    <option value="17">test17</option>
    <option value="18">test18</option>
    <option value="19">test19</option>
    <option value="20">test20</option>
</select>

所以当用户从第一个选择框m中选择“test1”时,他将在第二个选择框上只看到“test2”、“test3”和“test4”;第一个中的“test2”将在第二个框中显示“test6”、“test7”和“test8”。

如何使用 JavaScript 来解决这个问题?

【问题讨论】:

    标签: javascript select


    【解决方案1】:

    如果您可以使用 jQuery,那么您始终可以清除选项并将其附加到第二个选择。

        $('#ExtraField_1').change(function(){
            $('#ExtraField_2').find('option').remove()
            if($(this).val() == '1'){
               $('#ExtraField_2').append($("<option </option>").attr('value','2').text('test2'));
               $('#ExtraField_2').append($("<option></option>").attr('value','3').text('test3'));
               $('#ExtraField_2').append($("<option></option>").attr('value','4').text('test4'));
            }
            if($(this).val() == '2'){
               $('#ExtraField_2').append($("<option></option>").attr('value','5').text('test5'));
               $('#ExtraField_2').append($("<option></option>").attr('value','6').text('test6'));
               $('#ExtraField_2').append($("<option></option>").attr('value','7').text('test7'));
            } 
       });
    

    http://jsfiddle.net/8XVuv/2/

    仅使用 javascript 有点复杂,但我仍会采用相同的方法。

        function createOption(otext,oValue){
            var newOption = document.createElement('option');
            newOption.text = otext;
            newOption.value = oValue;
            return newOption;
        }
    
        function clearSelect(theSelect){
            for(var i = 0;i <= theSelect.options.length+1;i++)
            {
                theSelect.remove();
            }
        }
    
        function onSelect(theSelect){
            var nextSelect = document.getElementById('ExtraField_2');
            clearSelect(nextSelect);
            var selected = theSelect.options[theSelect.selectedIndex];
    
            if(selected.value == 1){
                nextSelect.add(createOption('test2','2'));
                nextSelect.add(createOption('test3','3'));
                nextSelect.add(createOption('test4','4'));
            }
            if(selected.value == 2){
                nextSelect.add(createOption('test5','5'));
                nextSelect.add(createOption('test6','6'));
                nextSelect.add(createOption('test7','7'));
            }
    
        }
    

    带有html:

    <select id="ExtraField_1" name="ExtraField_1" onchange="javascript: onSelect(this);" >
        <option value="0">Select a test..</option>
        <option value="1">test1</option>
        <option value="2">test2</option>
        <option value="3">test3</option>
        <option value="4">test4</option>
        <option value="5">test5</option>
        <option value="6">test6</option>
        <option value="7">test7</option>
        <option value="8">test8</option>
        <option value="9">test9</option>
        <option value="10">test10</option>
        <option value="11">test11</option>
        <option value="12">test12</option>
    </select>
    
    <select id="ExtraField_2" name="ExtraField_2">
        <option value="0">Select from the left</option>
    </select>​
    

    如您所见,它仍然可以满足您的期望,但您并没有隐藏选项。

    http://jsfiddle.net/upKzW/13/

    【讨论】:

    • 好吧,如果你要使用 jQuery,你需要添加一个脚本标签来引用 jQuery,如果你想使用我刚刚发布的纯 JavaScript 答案,那么你不需要任何东西浏览器,您需要将该代码放在某个地方的脚本标记中。
    • 谢谢我已经改变了第一个鳕鱼,但我不能使用它jsfiddle.net/AbuNidal/Rqt5u/4
    • 为什么不能用?它似乎按照您描述的方式工作。你不是在你正在开发的页面上添加对jQuery的引用吗?
    • 感谢我使用了 jQuery 代码。现在我有了我想要的表格;你能帮我在数据库中插入发送的数据吗?这是jsfiddle.net/AbuNidal/Rqt5u/9 的形式
    • 将它放入您的数据库会很复杂。我看到了你的另一个问题,但我对 php 的了解还不够,目前无法提供帮助。不过我会调查一下,也许我可以想出一些东西来帮助你。很高兴我能在第一部分提供帮助,祝你好运。
    【解决方案2】:
     $('#ExtraField_1').change(function() {
     $('#ExtraField_2').val(this.value);
    

    });

    http://jsfiddle.net/judearasu/rF8G6/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-04-10
      • 1970-01-01
      • 2015-09-29
      • 2014-05-28
      • 2014-11-23
      • 1970-01-01
      • 1970-01-01
      • 2012-03-24
      相关资源
      最近更新 更多