当前位置: 首页 > 面试题库 >

如何只允许输入数字(数字和小数点)?

蒙奇
2023-03-14
问题内容

我是angularjs的新手。我想知道什么是只允许在文本框中键入有效数字的方法。例如,用户可以键入“ 1.25”,但不能键入“ 1.a”或“ 1
..”。当用户尝试输入下一个将使它成为无效数字的字符时,他将无法输入。

提前致谢。


问题答案:

您可以尝试使用此指令来阻止将任何无效字符输入到输入字段中。( 更新
:这依赖于对模型具有明确知识的指令,这对于可重用性而言并不理想,请参见下面的可重用示例)

app.directive('isNumber', function () {
    return {
        require: 'ngModel',
        link: function (scope) {    
            scope.$watch('wks.number', function(newValue,oldValue) {
                var arr = String(newValue).split("");
                if (arr.length === 0) return;
                if (arr.length === 1 && (arr[0] == '-' || arr[0] === '.' )) return;
                if (arr.length === 2 && newValue === '-.') return;
                if (isNaN(newValue)) {
                    scope.wks.number = oldValue;
                }
            });
        }
    };
});

它还说明了以下情况:

  1. 从非空有效字符串到空字符串
  2. 负值
  3. 负十进制值

我在这里创建了一个jsFiddle,以便您可以看到它的工作原理。

更新

遵循亚当·托马斯(Adam
Thomas)关于不直接在指令中包括模型引用的反馈(我也认为这是最好的方法),我更新了jsFiddle以提供一种不依赖于此的方法。

该指令利用了本地作用域到父作用域的 双向绑定 。对指令内部的变量所做的更改将反映在父作用域中,反之亦然。

HTML:

<form ng-app="myapp" name="myform" novalidate> 
    <div ng-controller="Ctrl">
        <number-only-input input-value="wks.number" input-name="wks.name"/>
    </div>
</form>

角度代码

var app = angular.module('myapp', []);

app.controller('Ctrl', function($scope) {
    $scope.wks =  {number: 1, name: 'testing'};
});
app.directive('numberOnlyInput', function () {
    return {
        restrict: 'EA',
        template: '<input name="{{inputName}}" ng-model="inputValue" />',
        scope: {
            inputValue: '=',
            inputName: '='
        },
        link: function (scope) {
            scope.$watch('inputValue', function(newValue,oldValue) {
                var arr = String(newValue).split("");
                if (arr.length === 0) return;
                if (arr.length === 1 && (arr[0] == '-' || arr[0] === '.' )) return;
                if (arr.length === 2 && newValue === '-.') return;
                if (isNaN(newValue)) {
                    scope.inputValue = oldValue;
                }
            });
        }
    };
});


 类似资料:
  • 本文向大家介绍jQuery实现只允许输入数字和小数点的方法,包括了jQuery实现只允许输入数字和小数点的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了jQuery实现只允许输入数字和小数点的方法。分享给大家供大家参考,具体如下: 更多关于jQuery相关内容感兴趣的读者可查看本站专题:《jQuery拖拽特效与技巧总结》、《jQuery扩展技巧总结》、《jQuery常见经典特效汇总》

  • 我有一个输入字段,用户只能在其中输入数字。 JSFIDLE演示 问题是:当我输入一个数字(例如,)然后按点()时,或-浏览器会自动删除输入字段的内容(值设置为“”=空字符串)。但是为什么呢?将类型从更改为似乎可以解决问题。但是,我失去了输入字段的向上/向下箭头功能。有什么想法吗?

  • 问题内容: 如何将输入限制为文本框,使其仅接受数字和小数点? 问题答案: 这确实有效!

  • \这是JTextField的创建: 这是我的DocumentFilter: 这会自动从JTextField中删除所有字母和字符。 然而,我想知道是否有人知道有一个地方的所有命令都类似于“\D”。我花了一段时间才找到正确的信息。 另外,我现在的代码也可以防止。当我和替身一起工作时,我需要的那种类型。有什么想法吗? 谢谢!我今天学到了这么多,真是太神奇了。我已经连续编码了13个小时。

  • 问题内容: 有没有一种快速的方法来将HTML文本输入()设置为仅允许数字键击(加’。’)? 问题答案: 注意: 这是更新的答案。下面的注释指的是一个旧版本,其中充斥着密钥代码。 JavaScript 您可以使用以下功能过滤文本的输入值(支持CopyPaste,Drag+Drop,键盘快捷键,上下文菜单操作,不可键入的键,插入标记的位置,不同的键盘布局以及IE9以后的所有浏览器 : 现在,您可以使用