在选择下拉菜单"更改"时,在将新选项设置为选中之前无法重置已选择的选项

时间:2017-12-18 17:42:18

标签: jquery

我是一个用户列表,在更改此下拉列表时,我想将所选属性设置为列表中当前选定的选项,并为所有其他选项删除所选项。但由于某种原因,它没有按预期工作。

以下是我的代码:

var sel_val_1 = jQuery('#' + id_1 + ' option:selected').val();
jQuery('#'+id_1+' option[value="'+sel_val_1+'"]').attr("selected","selected");

当我在" on change"该选项正在被选中,但之前的选项未被重置。我尝试下面的代码重置,但它也没有帮助。

jQuery('#'+id_1).get(0).selectedIndex = 1;

进行更改时我的主要问题应该只有一个项目被选中="被选中"但每当我选择任何项目时,它都会获得相同的属性。

这就是我得到的:

<select style="width:260px;" name="employee_id" id="employee_id">
                                                    <option value="1" selected="selected">None </option>
                                                    <option value="4246" selected="selected">Name 1</option>
                                                    <option value="3441" selected="selected">Name 2</option>
                                                    <option value="4227">Name 3</option>
                                                    <option value="4479">Name 4</option>
                                                    <option value="4275">Name 5</option>
                                                    <option value="4506">Name 6</option>
                                            </select>

感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

您必须运行类似

的内容
 jQuery('#employee_id').find(":selected").attr('selected', false);
在将新选项设置为selected之前

修改

我在JSFiddle玩了一下,想出了这个。

&#13;
&#13;
$('#employee_id').change(function () {
  $(this).children('[selected="selected"]').attr('selected', false);
  $(this).find('[value="' + $(this).val() + '"]').attr('selected', true);
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select style="width:260px;" name="employee_id" id="employee_id">
  <option value="1" selected="selected">None </option>
  <option value="4246" selected="selected">Name 1</option>
  <option value="3441" selected="selected">Name 2</option>
  <option value="4227">Name 3</option>
  <option value="4479">Name 4</option>
  <option value="4275">Name 5</option>
  <option value="4506">Name 6</option>
</select>
&#13;
&#13;
&#13;