【问题标题】:Character limit on input text输入文本的字符限制
【发布时间】:2017-01-23 15:58:08
【问题描述】:

我希望我的文本框只允许数字,并且对其有字符限制。

目前,我的数字正常工作...现在我在弄清楚如何限制字符时遇到问题。

这就是我所拥有的......

JS:

app.directive('numbersonly', function () {
    return {
        restrict: 'A',
        link: function (scope, elm, attrs, ctrl) {
            elm.on('keydown', function (event) {
                if (event.which == 64 || event.which == 16 && elm.val().length > 4) {
                    return false;
                } else if (event.which >= 48 && event.which <= 57) {
                    return true;
                } else if (event.which >= 96 && event.which <= 105) {
                    return true;
                } else if ([8, 13, 27, 37, 38, 39, 40].indexOf(event.which) > -1 && elm.val().length > 4) {
                    return true;
                } else {
                    event.preventDefault();
                    return false;
                }
            });
        }
    }
});

标记:

<input type="text" id="txtEmpAge" data-ng-model="newemployee.Age" class="form-control" numbersonly required />

【问题讨论】:

    标签: angularjs validation input angularjs-directive angularjs-scope


    【解决方案1】:

    我遇到了同样的问题,并写了一个指令来解决这个问题。然后我找到了一个名为 angular-dynamic-number 的插件,它开箱即用。如果它满足您的需要,我建议您使用它。 https://www.npmjs.com/package/angular-dynamic-number

    【讨论】:

    • 我不想用插件来做这个
    • 请问您为什么不想使用插件?
    【解决方案2】:

    在 html 中输入属性长度。我们可以以多种形式使用它:

    长度、最小长度和最大长度

    试试这个

    maxlength="5"
    

    【讨论】:

    • 如果您不想在 HTML 中处理它,您可以简单地更改您在链接函数中传递的元素的属性吗?我是否遗漏了什么,因为我假设您必须在隔离范围上设置所需的限制,您必须将其放入指令中的 HTML 中,或者您是否希望所有输入的长度相同。
    • @Maccurt 因为我对输入数字使用了一个类似的指令,它不允许 maxlength 和 max 似乎不能很好地工作
    猜你喜欢
    • 2011-07-28
    • 1970-01-01
    • 2012-02-11
    • 2021-02-24
    • 1970-01-01
    • 1970-01-01
    • 2020-12-11
    • 2015-01-31
    • 1970-01-01
    相关资源
    最近更新 更多