如何创建一个文本框,该文本框应仅接受angular-typeahead列表值并清除不在typeahead列表中的内容?

时间:2014-10-09 07:13:02

标签: angularjs angular-ui-bootstrap

例如,我有一个带有文本字段的表单,它给出了输入列表来选择值。如果用户输入的内容不在预先输入列表中,我应该清除那些不在预先输入列表中的内容。怎么实现呢?????

1 个答案:

答案 0 :(得分:1)

如果您使用bootstrap库中的typeahead:http://angular-ui.github.io/bootstrap/

并强调:http://underscorejs.org/

您可以使用" $ watch"功能来解决您的问题。来自控制器中的$ scope变量。

允许您检查范围中变量的任何更改,如果输入的新值不存在于值数组中,则在输入变量中放入一个空字符串。

我做了一个例子:http://plnkr.co/edit/cp9SLKhLYowIwFXVImAK?p=preview (它区分大小写)

$scope.$watch('selected', function(newVal, oldVal){
    var newValPotentiallyExist= _.any($scope.states, function(state){
        return state.indexOf(newVal) != -1;
    });
    if(!newValPotentiallyExist){
       $scope.selected = '';
    }
});