【问题标题】:filtering values based on selected option根据所选选项过滤值
【发布时间】:2014-07-21 12:22:29
【问题描述】:

我的 HTML 上有两个下拉菜单。 我想根据所选选项过滤值。 当用户单击第一个下拉列表的值时,必须更改另一个下拉列表的值。 我知道它很简单,是的,你说得对,它很简单。 但是我的选项在我的 sql 中,我从 SQL 中填充了两个下拉列表的选项值。 这是我的代码:

第一个下拉列表:

<select class="fieldDropdown" ng-model="formData.Land" name="select1" id="select1" ng-options="value.ls_ItemText as value.ls_ItemText for (key, value) in formLIST.lands">
</select>

第二个下拉列表:

<select class="fieldDropdown" ng-model="formData.Phase"  name="select2" id="select2" ng-options="value.ls_ItemIndex as value.ls_ItemText for (key, value) in formLIST.phases>
</select>

我知道它适用于以下方法:

第一个下拉菜单:

<select name="select1" id="select1" ng-model="FormData.Lands" style="width: 206px; height: 27px;">
    <option value="0"> </option>
    <option value="1">A</option>
    <option value="2">B</option>
    <option value="3">C</option>
    <option value="4">D</option>
    <option value="5">E</option>
</select>

第二个下拉菜单:

<select name="select2" id="select2" ng-model="FormData.Phases" style="width: 206px; height: 27px;">
    <option value="0"></option>
    <option value="1">A</option>
    <option value="1">AA</option>
    <option value="1">AAA</option>
    <option value="1">A</option>
    <option value="1">A</option>

    <option value="2">BBB</option>
    <option value="2">BBBB</option>
    <option value="2">BBBBBBB</option>
    <option value="2">B</option>

    <option value="3">CCCC</option>
    <option value="3">CC</option>

    <option value="4">DDD</option>

    <option value="5">E</option>
</select>

jQuery:

$("#select1").change(function () {
    if ($(this).data('options') == undefined) {
        /*Taking an array of all options-2 and kind of embedding it on the select1*/
        $(this).data('options', $('#select2 option').clone());
    }
    var id = $(this).val();
    var options = $(this).data('options').filter('[value=' + id + ']');
    $('#select2').html(options);
});

这是工作JSFiddle

但正如我所问的,我想从 SQL 中填充值,除了直接输入 HTML。

即使我可以填写以下代码:

<select class="fieldDropdown" ng-model="formData.Phase"  name="select2" id="select2" ng-options="value.ls_ItemIndex as value.ls_ItemText for (key, value) in formLIST.phases | filter:{ls_ItemValue:'4'}"></select>

但它只是让我回到第二个下拉列表中的“D”组。但它不适用于其他团体。

谢谢。

【问题讨论】:

  • 你正在使用filter:{ls_ItemValue:'4'}????所以它的过滤。您正在使用 angularjs,然后像 angularjs 一样思考
  • 不,这只是一个例子。我想分类所有。当我单击第一个下拉列表中的值“A”时,它会为我带来第二个下拉列表中“A”组的值。这个过滤器:{ls_ItemValue:'4'} 只为我带来类别编号 4
  • 在角度上,您需要将过滤谓词从字符串值更改为范围变量
  • @charlietfl 先生,您能再解释一下吗?
  • $scope.optionValue=4,在 html 中:filter:{ls_ItemValue: optionValue}

标签: jquery html drop-down-menu


【解决方案1】:

将此用于 JQuery:

   $("#select1").change(function () {
   $scope.currentID = $(this).val(); });

这适用于您的 HTML:

<select class="fieldDropdown" ng-model="formData.Phase"  name="select2" id="select2" ng-options="value.ls_ItemIndex as value.ls_ItemText for (key, value) in formLIST.phases | filter:{ls_ItemValue: currentID}"></select>

现在它可以工作了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-10-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-02
    • 1970-01-01
    • 2015-05-09
    相关资源
    最近更新 更多