【问题标题】:How to disable value in select option when it already selected by another select option当另一个选择选项已经选择它时如何禁用选择选项中的值
【发布时间】:2018-01-24 23:04:09
【问题描述】:

所以,我有一个像这样的简单表格:

<div class="form-group">
<label class="">No Inventaris</label>
<div id="container">
    <input type="button" name="noInv" class="form-control" id="add_field" value="Klik untuk membuat text field baru"><br>
    <script type="text/javascript">
    var count = 0;
    $(function(){
        $('#add_field').click(function(){
            count += 1;
            $('#container').append(
                '<strong >No Inv Barang Ke ' + count + '</strong><br />' 
                + '<select id="field_' + count + '" name="fields[]' + '"  class="form-control no_inv"><?php $noInv = $this->modelku->select_inv() ?> <?php foreach($noInv->result() as $inv){ ?> <option value="<?php echo $inv->no_inv ?>"><?php echo $inv->no_inv ?></option><?php } ?></select><br>' );

        });
    });
    </script> 

</div>

当我单击按钮时,该字段将重新生成选择选项,并且值来自数据库

select_inv 函数:

public function select_inv()
{
    $this->db->select("no_inv");
    $this->db->from('detail_barang');
    $this->db->where("kondisi = 'Ada' ");
    $query = $this->db->get();
    return $query;
}

我的问题:当它已经被另一个选择选项选择时,如何禁用“选​​择”选项中的值?

【问题讨论】:

    标签: javascript jquery


    【解决方案1】:

    如果你需要,试试这个。

    我刚刚创建了一个示例下拉列表,并在我的 jquery 中使用所有选择选项的类触发了事件更改,然后我将获得选择和 id 的值。获得值后,我检查 val 是否为空,如果不为空,那么我将对所有 select 使用 each 函数并获取它们的 id 属性,以便我可以将它与 select 的 id 进行比较,如果它们的 id 不是同样,我将禁用与所选下拉列表具有相同值的选项。

    我使用焦点事件来获取先前的值,以便我可以重置用户是否更改所选选项的值。

     $( document ).ready(function() {
     
     $('body').on('click','#add_field',function(){
                count += 1;
                
                
                
                $('#container').append(
                    '<strong >No Inv Barang Ke ' + count + '</strong><br />' 
                    + '<select id="field_' + count + '" name="fields[]' + '"  class="form-control no_inv select_alternate"> <option value="">select</option><option value="test1">test1</option><option value="test2">test2</option><option value="test3">test3</option></select><br></select><br>' );
    
            });
    
    var count =0;
    var previous;
    var selectedData = [];
    $('body').on('click','.select_alternate',function(){
          previous = this.value;
         
    });
    
    
    $('body').on('change','.select_alternate',function(){
        var val = this.value;
        var id = $(this).attr('id');
        
        if(val != ''){
        
            $(".select_alternate").each(function(){
               var newID = $(this).attr('id');
               if(id != newID){
                  $('#'+newID).children('option[value="' + val + '"]').prop('disabled',true);
                   $('#'+newID).children('option[value="' + previous + '"]').prop('disabled',false);
                   
                   selectedData.splice($.inArray(val, selectedData),1);
               }else{
                  selectedData.push(val);
               
               }
            
            });
    
            
        }else{
    
          $(".select_alternate").each(function(){
               var newID = $(this).attr('id');
               if(id != newID){
                  $('#'+newID).children('option[value="' + previous + '"]').prop('disabled',false);
                  
               }
            
            });
        
        }
    });
    });
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <div class="form-group">
    <label class="">No Inventaris</label>
    <div id="container">
        <input type="button" name="noInv" class="form-control" id="add_field" value="Klik untuk membuat text field baru"><br>
       
    </div>

    【讨论】:

    • 我没有为添加新选择选项按钮添加任何代码,因为我们这里的主要目标只是其他选择输入中的禁用和启用选项
    • 您好,感谢您的回答,但是您的选择选项是手动进行的,选择选项的值不会从数据库中获取。你能用我原来的html做吗?
    • 我上面的脚本是:当我点击按钮时,选择选项将自动创建,选择选项的值来自数据库。因此,当我单击按钮 2x 时,将自动创建 2 个选择选项,等等
    • 是的,我只是出于示例目的删除了该按钮。你可以用按钮试试。你想让我为按钮添加选择输入添加代码吗?
    • 检查我的编辑我在这里创建了一个数组命名 selectedData 我将使用输入的选定值提供这个数组变量然后您可以在添加字段事件中添加一个条件以立即禁用新附加的输入.你可以在你的 foreach 语句中使用它,然后在选择字段中附加一个选项检查它是否 selectedData 包含该字段然后将禁用放在选项中,就是这样
    猜你喜欢
    • 2016-10-06
    • 1970-01-01
    • 2020-12-28
    • 1970-01-01
    • 2017-04-20
    • 2018-06-29
    • 2021-02-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多