有没有办法限制一个数字只使用angularjs接受一个点

时间:2013-12-12 08:04:42

标签: javascript angularjs

如果用户输入的数字如23.4。 ,那么它不应该接受第二个点,因为数字已经有一个小数点。如果有人输入一个像2 ...的数字,那么它也应该只接受2.并且不应该显示休息点。任何人都可以建议我怎么做?

3 个答案:

答案 0 :(得分:1)

您可以为此编写一个简单的指令。例如:

app.directive('restrictDecimal', function() {
    return {
        scope: {},
        link: function(scope, element, attrs, controller) {
            element.bind('keypress', function(e) {
                if (e.keyCode === 46 && this.value.indexOf('.') >= 0) {
                    e.preventDefault();
                    return false;
                }
            });
        }
    }
});

它的作用是阻止输入.(如果已经存在)。

演示plunk

但是请考虑使用适当的更高级验证和输入屏蔽。这只是一个基本的解决方案(没有处理粘贴事件)。

答案 1 :(得分:0)

如果您只是想确保输入是有效数字,那么Angular的表单验证将检查数字,如果您的输入为type="number"

<input type="number" ng-model="myNum">

http://docs.angularjs.org/api/ng.directive:input.number上的文档很好地证明了这一点。

并且,作为奖励移动输入将为您提供数字聚焦键盘,以便于输入。

但是对于更高级的案例,@ dfsq的答案会让你走上正确的道路。

答案 2 :(得分:-1)

如果html是这样的话:

<input id="number" name="dummy">

然后你可以这样做:

jQuery('#number').keyup(function(){
    var value = this.val().match(\d\+\.\d\d);
    this.val(value);
})