JQuery 下拉菜单的选定选项无法正常工作

JQuery selected option for Dropdown is not working properly

我有一个下拉菜单,其中包含两个选项 publicprivate。我正在使用 ajax 从数据库中获取数据并显示在表单字段中。所以我在 JQuery 中编写了脚本来设置要选择的值。但它只正常工作两次,比如 public 一次,第一次 private.

这是我的代码

HTML

<select name="insurance" class="form-select" id="insurance" required>
   <option value="">--Select--</option>
   <?php $insurance = App::make("App\Http\Controllers\AppointmentsController")->getInsurance(); ?>
    @foreach($insurance as $ins)  
       <option value="{{ $ins->id }}">{{ $ins->insurance }}</option>
    @endforeach
</select>

JQuery

if(data['insurance'] != ''){  
   console.log(data['insurance']);     // showing correct value
   $('#insurance > option[value="'+data["insurance"]+'"]').attr('selected',true);
}

这里 data['insurance'] 是我来自 ajax 的结果数组值。

  1. 首先我使用保险获取数据private - 工作正常
  2. 然后使用保险获取行 public - 工作正常
  3. 再次使用 private 获取数据 - 不工作(仅显示最后状态)

如果尝试获取任何值的记录 - 无效。

只有前两次,它工作正常

您还应该删除通过 jquery 选择的其他选项的属性。

正如我第一次看到的那样, 那么由于两个都被选中,所以第一个将在表单中保持选中状态。

尝试这样的事情:

if(data['insurance'] != ''){  

   if(data['insurance'] == 'public'){
     $('#insurance > option[value="private"]').removeAttr('selected');
     $('#insurance > option[value="public"]').attr('selected', true);
   }
   else{
     $('#insurance > option[value="public"]').removeAttr('selected');
     $('#insurance > option[value="private"]').attr('selected', true);
   }

}

我通过添加单行代码解决了我的问题。实际问题是,selected 选项始终保持 selected。如果我 select 一个选项然后第二个都将被标记为 selected。因此,在下一次调用中,将显示第一个选项,因为两者都是 selected。因此,在将 selection 分配给新选项之前,我添加了删除 selection 的代码。

这是我更正后的代码:

if(data['insurance'] != ''){  console.log(data['insurance']);
   $('#insurance').find('option:selected').attr('selected', false);
   $('#insurance > option[value="'+data["insurance"]+'"]').attr('selected',true);
}