【问题标题】:Select and disable options in 6 select elements at once一次选择和禁用 6 个选择元素中的选项
【发布时间】:2016-01-14 11:02:17
【问题描述】:

我想同时处理一些选择框。 在 select1a、select1b 或 select1c 中选择一个选项时,这三个中的值应相同。 除此之外,应在另一组三个选择框中禁用所选值。 select2a、select2b 和 select2c 的反应方式应该相同。

我在 stacoverflow 上找到了一些代码,我只是将它们组合在一起,但它仅适用于 Opera 12,不适用于 Firefox、Opera 15 或 Safari。 也许有人可以快速提示我的问题?

http://jsfiddle.net/7LTXC/

JS:

$('#select1a, #select1b, #select1c').change(function() {
    $('#select1a, #select1b, #select1c').not(this)
        .children('option[value=' + this.value + ']')
        .attr('selected', true)
        .siblings().removeAttr('selected');
    $('#select2a, #select2b,#select2c').not(this)
        .children('option[value=' + this.value + ']')
        .attr('disabled', true)
        .siblings().removeAttr('disabled');
});
$('#select2a, #select2b, #select2c').change(function() { 
    $('#select2a, #select2b, #select2c').not(this)
        .children('option[value=' + this.value + ']')
        .attr('selected', true)
        .siblings().removeAttr('selected');
    $('#select1a, #select1b,#select1c').not(this)
        .children('option[value=' + this.value + ']')
        .attr('disabled', true)
        .siblings().removeAttr('disabled');
});

HTML

<table>
<tr>
    <td>
        <select id="select1a" name="select1a" size="5">
            <option value="1">2-3</option>
            <option value="2" disabled="disabled">4</option>
            <option value="3">5-6</option>
            <option value="4">16</option>
            <option value="5" selected="selected">17-18</option>
        </select>
    </td>
    <td>
        <select id="select1b" name="frage_1" size="5">
            <option value="1">Text 1</option>
            <option value="2" disabled="disabled">Text 2</option>
            <option value="3">Text 3</option>
            <option value="4">Text 4</option>
            <option value="5" selected="selected">Text 5</option>
        </select>
    </td>
    <td>
        <select id="select1c" name="select1c" size="5">
            <option value="1">7</option>
            <option value="2" disabled="disabled">15</option>
            <option value="3">10</option>
            <option value="4">15</option>
            <option value="5" selected="selected">7</option>
        </select>
    </td>
</tr>
<tr>
    <td>
        <select id="select2a" name="select2a" size="5">
            <option value="1">2-3</option>
            <option value="2" selected="selected">4</option>
            <option value="3">5-6</option>
            <option value="4">16</option>
            <option value="5" disabled="disabled">17-18</option>
        </select>
    </td>
    <td>
        <select id="select2b" name="frage_2" size="5">
            <option value="1">Text 1</option>
            <option value="2" selected="selected">Text 2</option>
            <option value="3">Text 3</option>
            <option value="4">Text 4</option>
            <option value="5" disabled="disabled">Text 5</option>
        </select>
    </td>
    <td>
        <select id="select2c" name="select2c" size="5">
            <option value="1">7</option>
            <option value="2" selected="selected">15</option>
            <option value="3">10</option>
            <option value="4">15</option>
            <option value="5" disabled="disabled">7</option>
        </select>
    </td>
</tr>
</table>

【问题讨论】:

标签: jquery select option


【解决方案1】:

如下更新你的JS,它会起作用:

  $('#select1a, #select1b, #select1c').change(function () {
      $('#select1a, #select1b, #select1c').not(this).val($(this).val());
      $('#select2a,  #select2b, #select2c').find('option:not([value="' + $(this).val() + '"])').removeAttr("disabled");
      $('#select2a,  #select2b, #select2c').find('option[value="' + $(this).val() + '"]').attr("disabled", "disabled");
  });

  $('#select2a, #select2b, #select2c').change(function () {
      $('#select2a, #select2b, #select2c').not(this).val($(this).val());
      $('#select1a,  #select1b, #select1c').find('option:not([value="' + $(this).val() + '"])').removeAttr("disabled");
      $('#select1a,  #select1b, #select1c').find('option[value="' + $(this).val() + '"]').attr("disabled", "disabled");
  });

Fiddle

【讨论】:

  • 谢谢!设置适合并解决问题的“选择”的一行。我认为我的禁用代码行也适合。
  • 是的,主要是选择。其余的也可以从原始脚本中运行,我没有尝试那个...
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多