Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/370.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 仅用于num的AngularJs指令在IE11上不起作用_Javascript_Angularjs_Angularjs Directive_Internet Explorer 11 - Fatal编程技术网

Javascript 仅用于num的AngularJs指令在IE11上不起作用

Javascript 仅用于num的AngularJs指令在IE11上不起作用,javascript,angularjs,angularjs-directive,internet-explorer-11,Javascript,Angularjs,Angularjs Directive,Internet Explorer 11,我使用的是angularjs指令,它应该确保输入字段只接受数字。 该指令适用于Chrome和FF,但不适用于IE11 需要添加什么才能使其正常工作?或者指令在IE11中不起作用?我不确定,但如果有人能帮我找到解决方法,或者如果我在代码中犯了错误,那就太好了 我使用的是11.0.9600.19596版-更新版本:11.0.170。在这个版本中,我可以在框内键入字母字符,这与Chrome和FF中的行为相反 我还在IE11版本11.1392.17763.0更新版本11.0.205上试用了它 不知道还要

我使用的是angularjs指令,它应该确保输入字段只接受数字。 该指令适用于Chrome和FF,但不适用于IE11

需要添加什么才能使其正常工作?或者指令在IE11中不起作用?我不确定,但如果有人能帮我找到解决方法,或者如果我在代码中犯了错误,那就太好了

我使用的是11.0.9600.19596版-更新版本:11.0.170。在这个版本中,我可以在框内键入字母字符,这与Chrome和FF中的行为相反

我还在IE11版本11.1392.17763.0更新版本11.0.205上试用了它

不知道还要检查什么

谢谢,

伊拉斯莫

onlynum的AngularJS

app.directive('onlyNum', function () {
        return function (scope, element, attrs) {

            var keyCode = [8, 9, 37, 39, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 110];
            element.bind("keydown", function (event) {
                console.log($.inArray(event.which, keyCode));
                if ($.inArray(event.which, keyCode) == -1) {
                    scope.$apply(function () {
                        scope.$eval(attrs.onlyNum);
                        event.preventDefault();
                    });
                    event.preventDefault();
                }

            });
        };
    });
HTML:


会议ID

我使用下面的代码示例,它可以在IE 11和其他浏览器中很好地工作:

<!DOCTYPE html>
<html ng-app="test">
<head>
    <meta charset="utf-8" />
    <title></title>
    <script data-require="angular.js@1.4.x" src="https://code.angularjs.org/1.4.8/angular.js" data-semver="1.4.8"></script>
</head>
<body ng-controller="MainCtrl">
    <div class="w-25 p-3">
        <label for="meeting-id">Meeting ID</label>
        <input type="number" ng-model="meetingId" id="meeting-id" ng-trim="true" class="form-control" placeholder="Enter Meeting ID" only-num />
    </div>
    <script>
        var app = angular.module('test', []);

        app.controller('MainCtrl', function ($scope) {
            $scope.name = 'World';
        });

        app.directive('onlyNum', function () {
            return {
                restrict: 'A',
                link: function (scope, elm, attrs, ctrl) {
                    elm.on('keydown', function (event) {
                        if (event.shiftKey) { event.preventDefault(); return false; }
                        if ([8, 13, 27, 37, 38, 39, 40].indexOf(event.which) > -1) {
                            // backspace, enter, escape, arrows
                            return true;
                        } else if (event.which >= 49 && event.which <= 57) {
                            // numbers
                            return true;
                        } else if (event.which >= 96 && event.which <= 105) {
                            // numpad number
                            return true;
                        }
                        else {
                            event.preventDefault();
                            return false;
                        }
                    });
                }
            }
        });
    </script>
</body>
</html>

会议ID
var app=角度模块('测试',[]);
应用程序控制器('MainCtrl',函数($scope){
$scope.name='World';
});
app.directive('onlyNum',function(){
返回{
限制:“A”,
链接:函数(范围、elm、属性、ctrl){
elm.on('keydown',函数(事件){
if(event.shiftKey){event.preventDefault();返回false;}
if([8,13,27,37,38,39,40].indexOf(event.which)>-1){
//退格、输入、退出、箭头
返回true;

}否则如果(event.which>=49&&event.which=96&&event.which我尝试了您的代码,但在IE11中没有发现任何问题。我的IE版本是11.1667。17134@sandeepjoshi-我使用的是11.0.9600.19596版-更新版本:11.0.170。在此版本中,我可以在框内键入字母字符,这与Chrome和FF中的行为相反。谢谢you@sandeepjoshi-我也在IE11版本11.1392.17763.0更新版本11.0.205Hi上试用过,问题如何?我下面的回答对解决问题有帮助吗?如果有,你可以参考,它可以帮助其他社区成员解决类似问题。谢谢你的理解。@Yu Zhou-我很抱歉没有及时回复你,我很抱歉我要做另一项任务,我计划测试你的代码,一旦我完成了,我会尽快回复你。非常感谢你的帮助。
<!DOCTYPE html>
<html ng-app="test">
<head>
    <meta charset="utf-8" />
    <title></title>
    <script data-require="angular.js@1.4.x" src="https://code.angularjs.org/1.4.8/angular.js" data-semver="1.4.8"></script>
</head>
<body ng-controller="MainCtrl">
    <div class="w-25 p-3">
        <label for="meeting-id">Meeting ID</label>
        <input type="number" ng-model="meetingId" id="meeting-id" ng-trim="true" class="form-control" placeholder="Enter Meeting ID" only-num />
    </div>
    <script>
        var app = angular.module('test', []);

        app.controller('MainCtrl', function ($scope) {
            $scope.name = 'World';
        });

        app.directive('onlyNum', function () {
            return {
                restrict: 'A',
                link: function (scope, elm, attrs, ctrl) {
                    elm.on('keydown', function (event) {
                        if (event.shiftKey) { event.preventDefault(); return false; }
                        if ([8, 13, 27, 37, 38, 39, 40].indexOf(event.which) > -1) {
                            // backspace, enter, escape, arrows
                            return true;
                        } else if (event.which >= 49 && event.which <= 57) {
                            // numbers
                            return true;
                        } else if (event.which >= 96 && event.which <= 105) {
                            // numpad number
                            return true;
                        }
                        else {
                            event.preventDefault();
                            return false;
                        }
                    });
                }
            }
        });
    </script>
</body>
</html>