【问题标题】:How to disable (or change color) of 2nd drop down option depenging on 1st selection?如何根据第一个选择禁用(或更改颜色)第二个下拉选项?
【发布时间】:2013-03-12 05:03:34
【问题描述】:

我的问题是“如何根据第一个选择在第二个下拉列表中更改选项颜色(或禁用)?”使用 javascript/jquery。

例如:如果在我的第一个下拉列表中选择了“13 个楼梯”,那么 14 和 15 个楼梯在第二个下拉列表中应该具有“红色”(或禁用)下来。

类似于“如果选项==13 楼梯* -> 14* / 15* == 禁用”或 "如果选择值 "a" -> 值 "m-r" = red。"

也许这很简单,但我完全是 Javascript 的。 :( 希望有人能帮助我。

<form id="test" name="test" method="post" action="">
    <label for="demo"></label>
    <select name="first-election" id="first-election">
      <option value="a">13 Stairs - 001</option>
      <option value="b">13 Stairs - 002</option>
      <option value="c">13 Stairs - 003</option>
      <option value="d">14 Stairs - 001</option>
      <option value="e">14 Stairs - 002</option>
      <option value="f">14 Stairs - 003</option>
      <option value="g">15 Stairs - 001</option>
      <option value="h">15 Stairs - 002</option>
      <option value="i">15 Stairs - 003</option>
    </select>
<br /><br />
    <select name="color" id="color">
      <option value="j">13 Stairs - green</option>
      <option value="k">13 Stairs - yellow</option>
      <option value="l">13 Stairs - black</option>
      <option value="m">14 Stairs - green</option>
      <option value="n">14 Stairs - yellow</option>
      <option value="o">14 Stairs - black</option>
      <option value="p">15 Stairs - green</option>
      <option value="q">15 Stairs - yellow</option>
      <option value="r">15 Stairs - black</option>
    </select>
</form>

【问题讨论】:

  • 您不能在select 元素中设置options 的颜色。
  • 但也许禁用它们?

标签: javascript jquery


【解决方案1】:

disableoptions 的方法如下:

var $options = $('#color').find('option');

$('#first-election').change(function () {

    var num = parseInt( $('option:selected', this).text(), 10 );

    $options.prop('disabled', false).filter(function () {
        return $.text(this).indexOf(num) !== 0;
    }).prop('disabled', true);

}).change();

这是小提琴:http://jsfiddle.net/Gp7fF/

【讨论】:

  • 此函数读取选项的前 10 个字符,然后在第二个#colors 中禁用它们,对吗?知道如何查找“短语”吗?
【解决方案2】:

除非您编写自己的自定义选择对象(由 Divs 制成并且看起来像股票选择但不使用标准浏览器对象),否则您不能将某些项目设置为一种颜色,而将其他项目设置为另一种颜色。但是,您可以重新绘制整个选择器以包含您想要的任何字段,因此您的第二种方法(隐藏不再相关的元素)是完全可行的。

您需要使用 onSelect 回调并将其放在第一个下拉列表中,然后编写一个函数,根据用户在第一个下拉列表中选择的项目更改第二个下拉列表的内容。

【讨论】:

    【解决方案3】:

    我认为你可以做到。看这个例子: http://jsfiddle.net/TxbVt/773

    HTML:

    <select>
        <option>1111111</option>
        <option>222222222</option>
        <option>33333333</option>
        <option>44444444</option>
    </select>
    

    JS:

    var options = document.getElementsByTagName('option');
    for(var i = 0; i < options.length; i += 1) {
        var option = options[i];
        var colors = ['blue','yellow','purple','brown'];
        $(option).css('background-color',colors[i]);
    }
    

    点击选择表单,选项有不同的颜色。

    【讨论】:

      猜你喜欢
      • 2019-02-26
      • 1970-01-01
      • 1970-01-01
      • 2015-12-01
      • 2023-04-02
      • 2016-08-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多