我有一个必需的input="text"

以下代码是文本指令,它强制用户仅键入数字。

默认情况下,所需警告为ON。现在的问题是,如果您在文本框中键入除数字以外的任何关键字,它将不会键入字符(很好),但是所需的错误将消失!!!!结果是带有空值的文本框,并且不需要错误消息!



angular.module('league').directive('numbersOnly', function () {
    return {
        require: 'ngModel',
        link: function (scope, element, attr, ngModelCtrl) {
            function fromUser(text) {
                if (text) {
                    var transformedInput = text.replace(/[^0-9]/g, '');

                    if (transformedInput !== text) {
                        ngModelCtrl.$setViewValue(transformedInput);
                        ngModelCtrl.$render();
                    }
                    return transformedInput;
                }
                return undefined;
            }
            ngModelCtrl.$parsers.push(fromUser);
        }
    };
});



 

<input type="text" class="CreateTxt" ng-model="league.name" name="leagueName" required />
<span ng-show="myForm.leagueName.$error.required" style="color:red">Its required...</span>

最佳答案

使用type =“ number”不能达到相同的行为吗?

您需要更改


  return undefined;




return null;


否则,角度将导致解析错误,这不是必需的错误。因此,除了选择后备值以外,您几乎一切都做得很好。

09-25 19:48