2

Angularに検証させようとしているnumber型の入力フォームフィールドがあります(これは今のところ優れているようです)が、正規表現を動的に作成して、ng-patternを制限するユーザーは、json 呼び出しの後にコントローラーに渡される最小値と最大値の範囲の数値に変更されます。

これは迅速で役に立ちました:

数値のみの ng-pattern は、angular.js で「-」などの文字を受け入れます

したがって、最初にこれを ng-pattern に設定すると機能しますが、最小および最大範囲外の数値を許可します。

$scope.onlyNumbers = /^\d/;

ただし、その場で正規表現を作成して範囲にする必要があるため、あまり成功しませんでした。

$scope.onlyNumbers = new RegExp(".{" + $scope.min + "," + $scope.max + "}", "g");

もちろん、私は正規表現の専門家ではありません。

どんな助けでも大歓迎です。

前もって感謝します!

4

1 に答える 1

2

を使用してみる<input type="number">と、最小値と最大値を正規表現なしで直接設定できます。

html:

<div ng-app ng-controller="FormCtrl">
    <form name="form01">
        <input 
            type="number"
            min="{{range.min}}"
            max="{{range.max}}"
            ng-model="value"
            name="number"
            ng-class="{'error' : !form01.number.$valid}"
        >
    </form>
</div>

js:

function FormCtrl($scope) {
    $scope.range = {
        min: 10,
        max: 20
    };
}

CSS:

.error {
    border: 1px solid red;
    background: rgba(255,0,0,0.3);
}

デモ: http://jsfiddle.net/dmmLgnqb/2/

于 2014-08-15T23:33:56.517 に答える