Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/29.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 基于表单输入的显示/隐藏选项_Javascript_Jquery_Select_Option_Chained - Fatal编程技术网

Javascript 基于表单输入的显示/隐藏选项

Javascript 基于表单输入的显示/隐藏选项,javascript,jquery,select,option,chained,Javascript,Jquery,Select,Option,Chained,我有两个菜单。一个名为c1,一个名为c2。c2是隐藏的,当选择c1中的任何选项时,c2将显示。这很好,但是我想要一个小的调整,由于我对Javascript/jQuery的知识有限,我似乎无法理解 当c1的选项meta被选中时,我希望c2和其他选项一样显示,但我希望c2有一个传统选项 例如 我遇到的一个问题是,仅使用CSS很难隐藏选项,而且我的JS知识有限。一个解决方案是,但我不能把它塑造成我想要的链式选择 我在这里创建了一个,因此您可以看到所有的选择框和当前的JS。我不确定这是最好的方法,但我想

我有两个菜单。一个名为c1,一个名为c2。c2是隐藏的,当选择c1中的任何选项时,c2将显示。这很好,但是我想要一个小的调整,由于我对Javascript/jQuery的知识有限,我似乎无法理解

当c1的选项meta被选中时,我希望c2和其他选项一样显示,但我希望c2有一个传统选项

例如

我遇到的一个问题是,仅使用CSS很难隐藏选项,而且我的JS知识有限。一个解决方案是,但我不能把它塑造成我想要的链式选择


我在这里创建了一个,因此您可以看到所有的选择框和当前的JS。

我不确定这是最好的方法,但我想它会起作用:

var optionsArray = [{'key':'1','value':'val1','text':'Option 1'},
           {'key':'2','value':'val2','text':'Option 2, etc.'},
           ]; // Array of the #2 Options without the metadata


$('select[name="c1"]').change( function() {

    // Put your show/hide code here

    $('select[name="c2"] option').remove();// remove all the c2 options (In case there is already metadata)
    $.each(optionsArray, function(i){ //add all the basic options
          $('select[name="c2"]').append($("<option></option>")
            .attr("value",optionsArray[i]['value'])
              .text(optionsArray[i]['text']));
    });

    var valSelect1 = $(this).val();
    if (valSelect1 == 'Metadata'){ // add metadata only if the c1 option is metadata
         $('select[name="c2"]').append('<option value="Metadata">Metadata</option>');
    }
});

希望它能有所帮助

我不确定这是最好的方法,但我想它会起作用:

var optionsArray = [{'key':'1','value':'val1','text':'Option 1'},
           {'key':'2','value':'val2','text':'Option 2, etc.'},
           ]; // Array of the #2 Options without the metadata


$('select[name="c1"]').change( function() {

    // Put your show/hide code here

    $('select[name="c2"] option').remove();// remove all the c2 options (In case there is already metadata)
    $.each(optionsArray, function(i){ //add all the basic options
          $('select[name="c2"]').append($("<option></option>")
            .attr("value",optionsArray[i]['value'])
              .text(optionsArray[i]['text']));
    });

    var valSelect1 = $(this).val();
    if (valSelect1 == 'Metadata'){ // add metadata only if the c1 option is metadata
         $('select[name="c2"]').append('<option value="Metadata">Metadata</option>');
    }
});

希望它能有所帮助

为什么代码中的ID开头有磅符号,而JSFIDLE代码没有?对不起,我的错,它应该没有磅符号。为什么代码中的ID开头有磅符号,而JSFIDLE代码没有磅符号?对不起,我的错,它应该没有磅符号。