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