Jquery – Select optgroup in select

后端 未结 3 1218
忘了有多久
忘了有多久 2021-01-12 01:00

I have a select with 2 optgroups. Is there a way to call an function only if an option from the first optgroup is selected and call another function if an option from the se

相关标签:
3条回答
  • 2021-01-12 01:44
    $('#selectID').change(function(){
      var $option = $('option:selected', this); // get selected option
      var optGroup = $option.closest('optgroup').index(); // get which optgroup
      if(optGroup == 0){
        // first
      }
      else if(optGroup == 1){
        // second
      }
      else{
        // not first or second
      }
    });
    
    0 讨论(0)
  • 2021-01-12 02:00

    When you click on option you get the Id name of option group.

        var obj = {};
    $('select[name=queue]').on('change', function () {
        obj = {};
        var options = $('option:selected', this); //the selected options
        $.each(options, function (index, option) {
            var optgroupIndex = $(option).closest('optgroup').index() //get the index
            var optgroupId = $(option).parent()[0].id //get id
            if (obj.hasOwnProperty(optgroupId)) {
                obj[optgroupId].push($(option).val());
            } else {
                obj[optgroupId] = [$(option).val()];
            }
        });
        var textRows = [];
        $.each(obj, function(optgroupId, values){
            textRows.push(optgroupId +": " + values.join(', '));
        });
        $('#demo').html(textRows.join("<br>"));
    });
     /*Additional*/
    select::-webkit-scrollbar {display:none;}
    select::-moz-scrollbar {display:none;}
    select::-o-scrollbar {display:none;}
    select::-google-ms-scrollbar {display:none;}
    select::-khtml-scrollbar {display:none;}
    select{height:150px;}
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    
    <select name='queue' multiple> 
    <optgroup label="Frist Queue" id="Frist Queue">
    <option value="Person1">Person1</option>         
    <option value="Person2">Person2</option>         
    <option value="Person3">Person3</option>    
    </optgroup>
    <optgroup label="Second Queue" id="Second Queue">  
    <option value="Person1">Person1</option>  
    <option value="Person2">Person2</option> 
    </optgroup>
    </select>
    
    <div id="demo"></div>

    0 讨论(0)
  • 2021-01-12 02:03

    Sure.

    HTML:

    What is your preferred vacation spot?<br>
    <SELECT ID="my_select"> 
    
    <OPTGROUP LABEL="OptGroup One." id="one">        
    <OPTION LABEL="Florida">Florida</OPTION>         
    <OPTION LABEL="Hawaii">Hawaii</OPTION>         
    <OPTION LABEL="Jersey">Jersey Shore</OPTION>    
    </OPTGROUP> 
    
    <OPTGROUP LABEL="OptGroup Two" id="two">  
    <OPTION LABEL="Paris">Paris</OPTION>  
    <OPTION LABEL="London">London</OPTION> 
    <OPTION LABEL="Florence">Florence</OPTION>  
    </OPTGROUP>
    
    </SELECT>
    

    JS:

    $("#my_select").change(function(){
        var selected = $("option:selected", this);
        if(selected.parent()[0].id == "one"){
            //OptGroup 1, do something here..
        } else if(selected.parent()[0].id == "two"){
            //OptGroup 2, do something here
        }
    });
    

    Example here: http://jsfiddle.net/pyG2v/

    0 讨论(0)
提交回复
热议问题