2015-04-23 33 views
1

我的形式有以下在线验证NG模式不与正则表达式的工作

<form name="coForm" novalidate> 
<div> 
    <label>Transaction: </label> 
    <input type="text" name="transaction" class="form-control" 
      placeholder="<Direction> <Message Type>, ex.:OUT X12214" 
      ng-model="newco.transaction" 
      ng-pattern=/(^(IN)([A-Za-z0-9 &_]+))|(^(OUT)([A-Za-z0-9 &_]+))/ 
    required> 

     <span style="color:red" 
     ng-show="coForm.transaction.$dirty || 
        coForm.transaction.$invalid"> 
     <span ng-show="coForm.transaction.$error.pattern"> 
      Enter correct value for Transaction 
     </span> 
     <span ng-show="coForm.transaction.$error.required"> 
      Transaction is required. 
     </span> 
</div> 
</form> 

但验证仅适用于required而不是pattern

Here is the fiddle

下面是几个例子正匹配:

OUT X12214 
In X12850 
IN ARRANT 
OUT CORREC&TRANSLEG 
OUT TEST_TEST 
IN TEST2&TEST2 
+0

之前问问题请缩进你的代码。 –

回答

1

你失踪的ng-pattern属性&的双引号,你也没有初始化页面上的角度,你需要添加ng-app到网页上运行的角度

标记

<form name="coForm" novalidate ng-app=""> 
    <div> 
     <label>Transaction:</label> 
     <input type="text" name="transaction" class="form-control" placeholder="<Direction> <Message Type>, ex.:OUT X12214" ng-model="newco.transaction" 
     ng-pattern="/(^(IN)([A-Za-z0-9 &_]+))|(^(OUT)([A-Za-z0-9 &_]+))/" required> 
     <span style="color:red" ng-show="coForm.transaction.$dirty || coForm.transaction.$invalid"> 
      <span ng-show="coForm.transaction.$error.pattern">Enter correct value for Transaction</span> 
      <span ng-show="coForm.transaction.$error.required">Transaction is required.</span> 
     </span> 
    </div> 
</form> 

JsFiddle

+0

非常感谢。这是行得通的。 – DivB

+0

@DivB很高兴帮助你,谢谢:-) –

0

使用&&而不是||

ng-show="coForm.transaction.$dirty && 
       coForm.transaction.$invalid"> 
+0

这不起作用。我在表单中添加了一个更简单的字段,这在jsfiddle中也不起作用。但是新添加的字段“CO Number:”适用于我的应用程序。 [这是更新的小提琴](http://jsfiddle.net/DivB/pwan5L0g/5/) – DivB