Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/435.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 自定义验证[AngualrJS]_Javascript_Angularjs_Angularjs Directive - Fatal编程技术网

Javascript 自定义验证[AngualrJS]

Javascript 自定义验证[AngualrJS],javascript,angularjs,angularjs-directive,Javascript,Angularjs,Angularjs Directive,我正在编写代码,以便在输入文本框上实现验证。这应该允许用户只输入数字。几乎成功实现了此功能,但面临一个困难: 我无法删除最后输入的字符。 app.directive('num', function () { return { restrict: 'A', require: 'ngModel', link: function (scope, el, attrs, ctrl) { var lastValidValue; var NUMBER_

我正在编写代码,以便在输入文本框上实现验证。这应该允许用户只输入数字。几乎成功实现了此功能,但面临一个困难: 我无法删除最后输入的字符。

app.directive('num', function () {
return {
    restrict: 'A',
    require: 'ngModel',
    link: function (scope, el, attrs, ctrl) {

        var lastValidValue;
        var NUMBER_REGEXP = /^[0-9]+$/;
        ctrl.$parsers.push(function (value) {
            console.log('inside parsers')
            console.log("Last " + lastValidValue + ", View " + ctrl.$viewValue + ", model " + ctrl.$viewValue);
            if (NUMBER_REGEXP.test(value)) {
                console.log('true')
                lastValidValue = value;
            }
            else {
                ctrl.$viewValue = lastValidValue;
                ctrl.$render();
            }
            console.log("Last " + lastValidValue + ", View " + ctrl.$viewValue + ", model " + ctrl.$viewValue);
            return lastValidValue;
        });
    }
}
})


请帮助我解决这个问题。

尝试将
if(NUMBER\u REGEXP.test(value))
更改为
if(NUMBER\u REGEXP.test(value)| value==“”)

,这是有效的。谢谢。你能告诉我我做错了什么吗?所以你把指令编码成只允许数字(你的正则表达式模式)…空或“”不算作数字,所以你必须考虑/允许这种情况。