javascript - 禁用选择字段并将 "disabled"显示为选定选项

标签 javascript jquery html

我有一个 html 选择字段和两个 javascript 方法 - 一个用于启用选择字段,另一个用于启用:

enable(){
  $('#s').prop('disabled', false);
}

disable(){
  $('#s').prop('disabled', true);
}

<select id="s">
  <option value="1">1</option>
  <option value="2">2</option>
  <option value="3">3</option>
</select>

现在调用启用和禁用方法可以实现它们的预期目的。但除了在禁用方法中禁用该字段之外,我还希望该字段在禁用时显示“不可用”。我无法找到一种方法在没有实际选项的情况下在选择字段中显示类似的内容。那么,最好的解决方案是在禁用方法中添加一个选项并将其设置为选定状态,然后在启用方法中将其删除,还是有更干净的可用方法?

最佳答案

您可以将这两个功能合并为一个。

function toggleDisabled() {
  var dropdown = $('#s');
  var disabled = dropdown.prop('disabled');
  if (!disabled) {
    // add option to the top of the list
    dropdown.prepend('<option>unavailable</option>');
  } else {
    // remove any option with no value
    $('option:not([value])', dropdown).remove();
  }
  // flip disabled and change current value to first
  dropdown.prop('disabled', !disabled).val($('option:first', dropdown).val());
}

// just for testing

$('button').click(function() {
  toggleDisabled();
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select id="s">
  <option value="1">1</option>
  <option value="2">2</option>
  <option value="3">3</option>
</select>

<button>click me</button>

关于javascript - 禁用选择字段并将 "disabled"显示为选定选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48067745/

相关文章:

javascript - Ajax失败但消息已发送

Javascript 简单脚本不执行

javascript - 是否可以从 JavaScript 动态创建 Firebase 实时数据库并获取其 API key ?

javascript - AngularJS 拖放事件监听器不起作用

javascript - 如何修复下拉子菜单单击后不回滚?

jquery - 动态更新 CSS 属性

javascript - jQuery .on() 不适用于多个选择器

html - 我如何(默认情况下)以不同方式设置不同类型标签的样式?

html - CSS:显示: block ;与显示:表格;

javascript - 从一个页面插入 html 代码到另一个 html 页面