2016-06-23 265 views
2

我知道ng模式可以用来允许字符。我正在寻找一种方法来限制一个特定的角色。不允许用户输入管道字符'|'输入形式Angular

我的输入框应该可以处理除了垂直栏'|'之外的任何字符。我想要抛出一个错误只是不允许输入。有没有一种简单的方法,只是不允许该特定的字符。或者我应该只使用ng-pattern来包含除了竖线之外的所有东西?

我的HTML(我该怎么做?):

     <td class="col-xs-3"> 
         <input type="text" 
           name="Application" 
           ng-model="list.Application" 
           maxlength="64" 
           required /> 

          <div ng-messages="addForm.Application.$error" 
           ng-if="addForm.$submitted" 

         </div> 
        </td> 

enter image description here

+0

'ng-pattern'可以非常简单:) – AranS

+0

如何使用ng-pattern只是不允许使用垂直条?这是否意味着我必须使用ng-pattern来允许除此之外的所有可能的字符?有没有更好的办法? – Angular

+0

否定字符类有什么问题?使用一个。 –

回答

1

你需要一个ng-pattern attribute添加到input和使用正则表达式,这将限制文本输入。

此正则表达式必须与文本匹配,因此,您需要检查完整输入是否没有管道符号。

您需要:

  • ^ - 串
  • [^|]*的开始 - 零个或多个符号以外|(更换*+不允许空输入)
  • $ - 字符串的结尾。

因此,使用

ng-pattern="/^[^|]*$/" 

/.../是正则表达式的分隔符,可以让角知道我们是传递一个正则表达式对象,而不是一个字符串。

此外,ng-pattern="[^|]*"也应该工作,因为字符串模式默认在Angular中锚定。