2014-07-21 164 views
0

我在我的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”组第二个下拉内。但它不适用于其他团体。

谢谢。

+0

您正在使用'filter:{ls_ItemValue:'4'}''所以它的过滤。您正在使用angularjs,然后想像angularjs – Satpal

+0

不,它只是一个例子。我想分类全部。 当我点击第一个下拉列表中的值“A”时,它为我带来了第二个下拉菜单中“A”组的值。 此过滤器:{ls_ItemValue:'4'}只需带上类别号码4 – Mehran

+0

以角度显示,您需要将过滤器谓词从字符串值更改为范围变量 – charlietfl

回答

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> 

,现在它会工作。

+0

谢谢我的Name Mate。 其正常工作。 – Mehran