簡體   English   中英

AngularJS-表單上的ng-pattern缺少某些特殊符號(例如美元符號)的情況

[英]AngularJS - ng-pattern on a form failing for certain special symbols such as the dollar sign

我正在用AngularJS 1.5編寫應用程序。 我正在嘗試編寫一項功能,以便用戶可以在應用程序中驗證其密碼,並且我正在使用ng-messages來嘗試驗證表單。

我的來源有2個字段:密碼和確認密碼。 這兩個驗證條件是:兩個密碼都是必需的,並且密碼必須匹配。

我的問題是模式匹配對於某些特殊字符失敗。 美元符號失敗,但並非所有特殊字符都失敗。 我需要它來處理所有角色。

這是我的JSFiddle: http : //jsfiddle.net/aubz88/gm0obnqf/69/

一個代碼片段:

  <div>
    <label 
      class="item" 
      ng-class="{ 'has-error' : vm.verifyPassword.password.$invalid && (vm.verifyPassword.$submitted || vm.verifyPassword.$dirty) }">
    <span class="input-label">Password</span>
    <input
      id="password"
      type="password"
      name="password"
      ng-model="vm.data.password"
      placeholder="password"
      required>
    </label>
  </div>

問題是您的JSFiddle中的這一行將vm.data.password(作為字符串)傳遞給ng-pattern。

ng-pattern="vm.data.password"

根據ngPattern的Arguments部分的文檔https://docs.angularjs.org/api/ng/directive/ngPattern#ngPattern-arguments

“必須計算為RegExp或可解析為RegExp或String或RegExp文字的String的AngularJS表達式。”

因此AngularJS將您的輸入解析為正則表達式,這就是為什么某些符號失敗的原因,例如$(美元符號),因為$是正則表達式中的保留關鍵字。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM