Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何限制下拉列表值_Javascript_Html_Angularjs - Fatal编程技术网

Javascript 如何限制下拉列表值

Javascript 如何限制下拉列表值,javascript,html,angularjs,Javascript,Html,Angularjs,这是你的电话号码 在JSFIDLE中有一个将动态添加的下拉字段。第一个选择的值不应显示在第二个添加的下拉列表中。因此,我不会有重复的问题。如何在angularjs中实现此功能 <select ng-model="personalDetail.fname" ng-repeat="x in names"> </select $scope.names = ["Emil", "Tobias", "Linus"]; 每个下拉列表都必须根据之前所做的选择跟踪可用名称 将$s

这是你的电话号码

在JSFIDLE中有一个将动态添加的下拉字段。第一个选择的值不应显示在第二个添加的下拉列表中。因此,我不会有重复的问题。如何在angularjs中实现此功能

 <select ng-model="personalDetail.fname" ng-repeat="x in names">
</select
     $scope.names = ["Emil", "Tobias", "Linus"];


每个下拉列表都必须根据之前所做的选择跟踪可用名称

$scope.names
声明移动到控制器顶部

$scope.names = ["Emil", "Tobias", "Linus"];
然后将
names
属性添加到
personaldail
对象中,此属性将用于根据以前的选择跟踪可用名称

$scope.personalDetails = [
{
    'names':$scope.names
}];
现在,您可以修改addNew函数,以便在添加下拉列表时设置正确的值数

$scope.addNew = function(){
    $scope.personalDetails.push({ 
        'fname': "", 
        'lname': "",
        'email': "",
        // Make a copy of the values set for the previous drop down
        'names': $scope.personalDetails[$scope.personalDetails.length - 1].names.slice() 
        });

        // Determine the value of the previous selected name
        var previousSelectedName = $scope.personalDetails[$scope.personalDetails.length - 2].fname;

        // Get the index of the previous selected name     
        var index = $scope.personalDetails[$scope.personalDetails.length - 1].names.indexOf(previousSelectedName);

        // Remove the name from the valid names list
        if(index > -1){
            $scope.personalDetails[$scope.personalDetails.length - 1].names.splice(index, 1);
        }
    }
}
还请记住更新ng repeat以使用新名称personalDetail.names属性

<tr ng-repeat="personalDetail in personalDetails">                       
    <td>
        <select ng-model="personalDetail.fname" ng-options="x for x in personalDetail.names">
        </select>
    </td>
</tr>

这是新的演示


请注意,我没有处理没有名字可供选择的情况。但这种情况应该很容易处理。

请找到下面的解决方案。我想它解决了你的问题

var-app=angular.module(“myapp”,[]);
app.controller(“ListController”、[“$scope”、函数($scope){
$scope.personalDetails=[{
“fname”:“穆罕默德”,
}];
$scope.names=[“穆罕默德”、“埃米尔”、“托拜厄斯”、“利纳斯”];
$scope.namesTemp=[“穆罕默德”、“埃米尔”、“托拜厄斯”、“利纳斯”];
$scope.addNew=函数(personalDetail){
if(personaldail!=未定义&&personaldail.fname!=未定义){
var index=$scope.namesTemp.indexOf(personaldail.fname)//