Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/415.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/70.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 我想在AngularJS应用程序中创建一个输入数字框,用户不能在其中键入十进制数字。(整数输入框)_Javascript_Jquery_Html_Angularjs - Fatal编程技术网

Javascript 我想在AngularJS应用程序中创建一个输入数字框,用户不能在其中键入十进制数字。(整数输入框)

Javascript 我想在AngularJS应用程序中创建一个输入数字框,用户不能在其中键入十进制数字。(整数输入框),javascript,jquery,html,angularjs,Javascript,Jquery,Html,Angularjs,其想法是,当用户试图在数字输入框中输入数字时,不应输入小数点。我想在控制器上捕获$event,然后更改输入控件上的数据。但这对我不起作用。 我在angular应用程序网页中有一个输入框: <input type="number" ng-keydown="checkfordecimal($event, age)" min="1" max="125" name="inputage" ng-required="true" ng-model="model.age" /> 你能想出一个更好的

其想法是,当用户试图在数字输入框中输入数字时,不应输入小数点。我想在控制器上捕获$event,然后更改输入控件上的数据。但这对我不起作用。 我在angular应用程序网页中有一个输入框:

<input type="number" ng-keydown="checkfordecimal($event, age)" min="1" max="125" name="inputage" ng-required="true" ng-model="model.age" />

你能想出一个更好的方法来实现这一点吗?

你可以用正则表达式杀死所有非十进制字符,如下所示:

$scope.checkfordecimal = function(){
   $scope.model.age = $scope.model.age.replace(/\D/g, '');//Remove all non decimal characters and store it in the model
}
  • \D
    表示“查找所有非数字”
  • g
    标志表示“全局”或“检查每个字符”

然后每个匹配项(如点)都将替换为空字符串(
'

这应该是一个
指令
下面是我看到的一个例子(归功于@My Mai):

用法:

<input type="text" name="number" only-digits>


这很有效!通过一些调整,我能够定制我的需求。感谢Amir Popvich调用方法“inputValue()”。当用户在inputbox中输入值时是否自动调用?如果是,则当用户在文本框的第一个位置输入句点(“.”)时,将不会调用该方法。(as.“.”将不会被视为值。@用户修改表单输入中的值后,将立即调用添加到$parsers的user2902287函数。请搜索它并阅读有关它的详细信息。
  app.directive('onlyDigits', function () {
    return {
      require: 'ngModel',
      restrict: 'A',
      link: function (scope, element, attr, ctrl) {
        function inputValue(val) {
          if (val) {
            var digits = val.replace(/[^0-9]/g, '');

            if (digits !== val) {
              ctrl.$setViewValue(digits);
              ctrl.$render();
            }
            return parseInt(digits,10);
          }
          return undefined;
        }            
        ctrl.$parsers.push(inputValue);
      }
    };
});
<input type="text" name="number" only-digits>