2

次のような形式の入力があります。

<input type="number" name="inputStageNumTeams" id="inputStageNumTeams"
 ng-model="s.numTeams" validate-greaterthan="2" required>

ただし、何らかの理由で、カスタムディレクティブvalidateGreaterthanが正しく実行されていません。入力タイプを「テキスト」に変更すると、チャームのように機能します。可能であれば、入力タイプを数値のままにしておきたいです。

問題のディレクティブは次のとおりです。

app.directive('validateGreaterthan', function() {
return {
    require: 'ngModel',
    link: function(scope, elm, attrs, ctrl) {
        ctrl.$parsers.unshift(function(viewValue) {
            var number = attrs.validateGreaterthan;
            if (parseInt(viewValue) !== NaN) {
                scope.numberValid = ((viewValue && (parseInt(viewValue) >= number)) ? 'valid' : undefined);
            }

            if(scope.numberValid) {
                ctrl.$setValidity('number', true);
                return viewValue;
            } else {
                ctrl.$setValidity('number', false);
                return undefined;
            }

        });
    }
};
});
4

2 に答える 2

3

既存の [min="{string}"] ディレクティブを使用しようとしないのはなぜですか?

http://docs.angularjs.org/api/ng.directive:input.number

于 2013-02-04T07:44:02.890 に答える
0

属性値 (attrs.validateGreaterthan) が文字列であることは確かです。その文字列を整数に変換して、同じ型を比較していることを確認します。

于 2013-02-04T11:23:47.250 に答える