【问题标题】:Several Select: disable/hide/remove selected option in one select多项选择:一次选择禁用/隐藏/删除选定的选项
【发布时间】:2017-12-19 13:59:01
【问题描述】:

我正在尝试创建一个包含多个选择的表单,用户应将这些选择从 1 到 8 进行排名。但是,我在隐藏/删除/禁用选择选项时遇到了一些麻烦。

这是我的表格 这只是要排名的 8 个选择中的前四个

  <label>Spirituality</label>\
 <select id="ranks1" class="form-control form-input" name="answer[]" required>
    <option value="" selected>--</option>
    <?php for ($i=1;$i<=10;$i++){?>
    <option value="<?=$i;?>"><?= $i;?></option>
    <?php } ?>
  </select>
   <label>School</label>
  <select id="ranks1" class="form-control form-input" name="answer[]" required>
    <option value="" selected>--</option>
    <?php for ($i=1;$i<=10;$i++){?>
    <option value="<?=$i;?>"><?= $i;?></option>
    <?php } ?>
  </select>
   <label>Family</label>
  <select id="ranks1" class="form-control form-input" name="answer[]" required>
    <option value="" selected>--</option>
    <?php for ($i=1;$i<=10;$i++){?>
    <option value="<?=$i;?>"><?= $i;?></option>
    <?php } ?>
  </select>
   <label>Friends</label>
  <select id="ranks1" class="form-control form-input" name="answer[]" required>
    <option value="" selected>--</option>
    <?php for ($i=1;$i<=10;$i++){?>
    <option value="<?=$i;?>"><?= $i;?></option>
    <?php } ?>
  </select>

这就是我目前的剧本

$(document).ready(function () {
    $("#ranks1").click(function () {
        $('#ranks1 option').prop('disabled', true);
    });
});

我为 CSS 做了这个。对于禁用选项

select option[disabled] {
    display: none !important;
}

有关表单外观的更多背景信息。

【问题讨论】:

  • 一组选择并不能为排名顺序提供良好的 UI。改为考虑something like this
  • 您想何时禁用选择选项?换句话说,您遇到了什么问题?
  • 您知道id 是一个唯一标识符,并且您的DOM 中不应有具有相同id 的元素。对吧?!
  • @user1477388 .在选择选项中选择的数字没有隐藏/禁用
  • @EhsanT 哦。我只是认为他们在同一个表单组中并且应该具有相同的 ID。对不起

标签: javascript jquery html css forms


【解决方案1】:

我认为您想要的是 change 事件,而不是 click 事件。

请考虑以下示例,该示例在更改时禁用所选选项。

HTML:

<select id="selectlist">
  <option value="0">Please select</option>
  <option value="1">Option 1</option>
  <option value="2">Option 2</option>
  <option value="3">Option 3</option>
</select>

Javascript:

$('#selectlist').on('change', function() {
    var selectedVal = $(this).find(":selected").val();
  if (selectedVal != 0) {
    // disable selected value
    var selectedOption = $(this).find('option[value=' + selectedVal + ']');
    selectedOption.attr('disabled', 'disabled');
  }
});

JSFiddle:https://jsfiddle.net/tp9urjkb/

【讨论】:

  • 但是我有多个选择。
  • 同一原则适用于所有人。例如,请参阅jsfiddle.net/tp9urjkb/1
  • [![我的目标是在下一次选择中禁用选定的选项不在同一个选择上][1]][1][1]:i.stack.imgur.com/1rgtk.png
  • 要禁用下一个选择列表中的选定选项,您可以简单地使用jquery的.next()函数,就像jsfiddle.net/tp9urjkb/2一样
猜你喜欢
  • 1970-01-01
  • 2013-11-08
  • 1970-01-01
  • 2013-07-13
  • 2021-05-19
  • 2018-07-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多