将多个选择框选项链接到单个选择

时间:2011-12-02 17:35:38

标签: javascript jquery select jquery-mobile chained

我正在使用jquery插件jquery.chained.js的修改版本来筛选出基于选择框的另一个值的选择框选项和复选框。但是,现在我需要根据前面选择框中的2个选项过滤选择框。

我有3个选择框。

  1. 员工
  2. 房间
  3. 服务
  4. 和几个复选框或选择

    • 扩展中心

    上述插件依赖于首选项将其显示为复选框或下拉列表

    如果您更改Staff,那么现在就是这样,那么ServicesAddons选项将更改为员工可以访问的服务。但是,我现在需要进行设置,以便ServicesAddons根据StaffServices的访问权限以及Rooms提供这些服务的内容进行设置。

    是否有人能够帮我修改此已修改的脚本以添加对多个选择框的支持?我想尝试保持它的通用性,因为我们可能使用这个链接来编写其他元素的脚本。

    总结我要找的是添加对Rooms select框的支持,以进一步筛选Services和AddonServices选项。

    可以找到示例代码http://bit.ly/uzEDL2

    编辑:checkboxradio()适用于jquery Mobile,所以不要担心这些。

1 个答案:

答案 0 :(得分:1)

要使子选择依赖于两个父母的值,请使用类似first\second的类名。请注意,如果你有非常复杂的选择结构,那么保持这种类就会变得很麻烦。在那个原因中,使用插件的远程版本可能更容易。

取自plugin documentation的示例。在这个例子中,柴油发动机仅适用于BMW 3和5系列轿车。这是通过使用类名series-3\sedanseries-5\sedan来实现的。

<select id="series">
  <option value="">--</option>
  <option value="series-3" class="bmw">3 series</option>
  <option value="series-5" class="bmw">5 series</option>
  <option value="series-6" class="bmw">6 series</option>
  <option value="a3" class="audi">A3</option>
  <option value="a4" class="audi">A4</option>
  <option value="a5" class="audi">A5</option>
</select>

<select id="model">
  <option value="">--</option>   
  <option value="coupe" class="series-3 series-6 a5">Coupe</option>
  <option value="cabrio" class="series-3 series-6 a3 a5">Cabrio</option>
  <option value="sedan" class="series-3 series-5 a3 a4">Sedan</option>
  <option value="sportback" class="a3 a5">Sportback</option>
</select>

<select id="engine">
  <option value="">--</option>   
  <option value="25-petrol" class="series-3 a3 a4">2.5 petrol</option>
  <option value="30-petrol" class="series-3 series-5 series-6 a3 a4 a5">3.0 petrol</option>
  <option value="30-diesel" class="series-3\sedan series-5\sedan a5">3.0 diesel</option>
</select>

$("#model").chained("#series");
$("#engine").chained("#series, #model");

请注意,您的HTML无效。单号不是有效的类名。类名必须以下划线字母[a–z],下划线[_]或短划线[-]开头,然后是数字,字母,下划线和短划线。可以从Allowed characters for CSS identifiers找到更好的解释。