当前位置: 首页 > 知识库问答 >
问题:

限制下拉列表的范围

养振濂
2023-03-14

我有两个HTML中的下拉列表(简化)如下所示:

<select name="from" id="abs-from-1">
    <option value="1">One</option>
    <option value="2">Two</option>
    <option value="3">Three</option>
    <option value="4">Four</option>
    <option value="5">Five</option>
</select>

<select name="to" id="abs-to-1">
    <option value="1">One</option>
    <option value="2">Two</option>
    <option value="3">Three</option>
    <option value="4">Four</option>
    <option value="5">Five</option>
</select>

我想限制这些输入,以便当用户在第一个下拉列表中选择“三”时,值“一”和“二”在第二个下拉列表中被完全删除(或禁用),反之亦然:当用户在第二个下拉列表中选择“四”时,我想从第一个下拉列表中删除“五”。(有点像一个范围滑块)

我知道这应该可以通过一些jQuery代码,但谁能解释一下怎么做?

编辑:

添加了一些我曾经使用过的jQuery代码,我可以选择当前值并获得下一个下拉元素。但是,我如何才能禁用“to”的值,这些值小于“from”元素中的当前值,反之亦然。

$('[name="from"]').on("change", function() {
    var currentVal = $(this).attr('value');
    var toElem = $(this).next('[name="to"]');
});

共有1个答案

端木令
2023-03-14

并不是用很少的代码就能做到这一点的。我就是这么做的。

var from = $('#abs-from-1');
var to = $('#abs-to-1');

from.change(function () {
    var selectedValue = parseInt($(this).val());
    to.find('option').prop('disabled', false).filter(function () {
        return parseInt(this.value) < selectedValue;
    }).prop('disabled', true);
});

to.change(function () {
    var selectedValue = parseInt($(this).val());
    from.find('option').prop('disabled', false).filter(function () {
        return parseInt(this.value) > selectedValue;
    }).prop('disabled', true);
});

更新:使用选项标签的序数索引也可以是一个选项。这是另一把小提琴。

var from = $('#abs-from-1');
var to = $('#abs-to-1');

from.change(function () {
    var selectedIndex = this.selectedIndex;
    to.find('option').prop('disabled', false).filter(function (index) {
        return index < selectedIndex;
    }).prop('disabled', true);
});

to.change(function () {
    var selectedIndex = this.selectedIndex;
    from.find('option').prop('disabled', false).filter(function (index) {
        return index > selectedIndex;
    }).prop('disabled', true);
});
 类似资料:
  • 增加下拉列表在到按钮上,确保 data-activates 属性匹配 <ul> 标签的 id,你可以增加分隔线通过 <li class="divider"></li> 标签。 <!-- Dropdown Trigger --> <a class='dropdown-button btn' href='#' data-activates='dropdown1'>单击我</a> <!-- D

  • 问题内容: 快速创建下拉菜单的库是什么?我是Xcode和Swift语言的新手,所以有人可以指导我如何快速实现下拉列表吗? 问题答案: “下拉菜单”是一个网络控件/术语。在iOS中,我们没有这些。您可能会更好看。查看本教程,以了解PopoverControllers http://www.raywenderlich.com/29472/ipad-for-iphone-developers-101-i

  • 输入是按分数排序的,如下所示: 现在我需要在以下限制下从数组中选择10个得分最高的元素: 它们应该具有不同的 它们应该有不同的 同一。并且来自同一的任何子序列的长度不应大于2。 如果已经有一个选定的元素具有此,那么新元素将被丢弃。 如果已经有一个选定的元素具有这个,那么新元素将被丢弃。 如果已经有三个选定元素具有此,那么新元素将被丢弃。 如果在选定的尾部已经有两个元素具有此,那么新元素将被丢弃。

  • 实现下拉列表(Combo Box)功能,可以用作下拉单选框。 [Code4App.com]

  • 我的代码如下: WebElement stateDropDown=驱动程序。findElement(By.xpath(“/html/body/form/div[3]/main/div/div/div/span/div/fieldset/div[4]/div[1]/span/span[1]”);列表选项=状态下拉列表。findElements(By.xpath(“/html/body/div[1]/

  • 问题内容: 我想创建两个下拉列表,类别和项目。 如果我选择名为car的类别之一,则项目下拉列表应包含Honda,Volvo和Nissan。 如果我选择一个名为phone的类别,则项目下拉列表应具有此iPhone,Samsung,Nokia。 我怎样才能做到这一点?我知道我无法使用纯HTML做到这一点。 问题答案: 工作演示 (带有jquery) 更新 :使用eval()能够添加所需的任意数量的数组