1

我正在使用ng-tags-input, 并尝试修改输入,以便只能添加允许的标签。例如,一个数组包含 'Tag1' 但不包含 'T1',所以当在输入栏中输入 'T1' 时它是不被接受的,但 'Tag1' 是因为它是 'permitted'。

谢谢。

4

2 回答 2

4

目前没有内置的方法来执行这种验证。但我认为你可以使用不同的方法:

  • 使用autoComplete指令为用户提供有效国家代码列表;
  • addFromAutocompleteOnly选项设置为true,因此只允许来自自动完成列表的标签。

HTML

<tags-input ng-model="countryCodes" add-from-autocomplete-only="true">
   <auto-complete source="loadCountryCodes($query)"></auto-complete>
</tags-input>

工作笨拙

于 2014-07-09T06:13:10.193 回答
1

以防万一尝试检查电子邮件 ID,下面是代码。如有其他验证,请相应更改验证功能。

HTML:

<tags-input ng-model="tagList" add-on-space="true" add-on-comma="true" add-on-blur="true" add-on-enter="true" on-tag-added="tagAdded($tag);" placeholder="Add comma separated email id's" ></tags-input>

控制器:

$scope.tagList = ['abc.def@gmail.com', 'pqr.stu@gmail.com'];
$scope.tagAdded=function(tag){    
    var textEntered=tag.text;       
    var isVaildEmail=validateEmail(tag.text);
    console.log($scope.tagList);
    if(isVaildEmail){
       console.log(true); //do something
    }
    else{
       $scope.tagList.splice($scope.tagList.indexOf(tag),1); //remove the aded tag from ng-model of the input. i.e. tagList
    } 
}
function validateEmail(email) {
    var re = /^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i;
    return re.test(email);
}
于 2015-05-23T20:32:27.133 回答