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

Javascript 有没有办法用angularjs限制一个数字只接受一个点,javascript,angularjs,Javascript,Angularjs,如果用户输入23.4之类的数字,那么它不应该接受第二个点,因为这个数字已经有一个小数点了。同样,如果有人输入一个像2这样的数字,那么它也应该只接受2。不应该显示其余的点。有人能建议我怎么做吗?如果html是这样的: <input id="number" name="dummy"> jQuery('#number').keyup(function(){ var value = this.val().match(\d\+\.\d\d); this.val(value);

如果用户输入23.4之类的数字,那么它不应该接受第二个点,因为这个数字已经有一个小数点了。同样,如果有人输入一个像2这样的数字,那么它也应该只接受2。不应该显示其余的点。有人能建议我怎么做吗?

如果html是这样的:

<input id="number" name="dummy">
jQuery('#number').keyup(function(){
    var value = this.val().match(\d\+\.\d\d);
    this.val(value);
})

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

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;
                }
            });
        }
    }
});
它所做的是阻止键入一个
(如果已经有)

演示


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

如果您只是试图确保输入是有效的数字,如果您的输入有
type=“number”


位于的文档已经实现了这方面的良好演示

此外,作为一个额外的移动输入将为您提供以数字为中心的键盘,以便于输入


但对于更高级的情况,@dfsq的回答将使您走上正确的道路。

这并不是一个真正的角度问题,更多的是一个HTML问题。您应该寻找某种屏蔽输入。如果您正在使用自己版本的jQuery与Angular,您可以使用Why not创建一个它可以关联的指令,并且在输入更改时,它将扫描输入编号,并且只使用它认为有效的第一个十进制数?它不起作用。请尝试将输入设为1。。。。。,您可以看到它接受所有点。当然,如果您在字段中粘贴错误的数字,它将不起作用。我刚刚给了您一个如何编写自定义指令的提示。您只需要处理粘贴事件。
<input type="number" ng-model="myNum">