Javascript 限制输入数字小数点前后的数字
如何限制小数点之前和之后的数字,比如123.123,这样之前最多可以有3个数字。之后最多3个数字Javascript 限制输入数字小数点前后的数字,javascript,angularjs,input,Javascript,Angularjs,Input,如何限制小数点之前和之后的数字,比如123.123,这样之前最多可以有3个数字。之后最多3个数字 <div class="form-group"> <input type="number" class="form-control" name="ta" id="ta" placeholder="ta" ng-model="ta.kol" ng-maxlength="15"/> <p ng-show="taForm.kol.$error.maxlength
<div class="form-group">
<input type="number" class="form-control" name="ta" id="ta" placeholder="ta" ng-model="ta.kol" ng-maxlength="15"/>
<p ng-show="taForm.kol.$error.maxlength" class="help-block">Max 15 symbols !</p>
</div>
最多15个符号
如果您只需在输入中添加一个事件侦听器,然后在小数点处拆分输入,就可以用一段简单的javascript来解决这一问题,然后您可以检查两部分的长度并采取相应的行动
您可以在输入字段上添加一个onchange事件,并调用一个函数,该函数使用regex验证当前输入值,并与用户进行通信
正则表达式:^[0-9]{0,3}.?[0-9]{0,3}$
要验证的JS代码:
function validateNumberInput(inputNumber){
return number.search(/^[0-9]{0,3}.?[0-9]{0,3}$/) == 0 ? true : false;
}
您还可以用angular编写一个指令来处理相同的问题。您可以将
ng模式
与正则表达式一起使用:
文档:对于分数,它非常简单,因为您可以使用角数过滤器。对于数字前的数字,您应创建如下过滤器:
app.filter('beforeDigit', function ($filter) {
return function (input) {
if (input>1000)
return (input % 1000)
elseif(input<1000)
return input;
};
});
{{val | filter:{number:3}, filter:beforeDigit }}
经过数小时的工作,我创建了一个java脚本函数,用于处理按键事件。数字在小数点分隔符之前可以是8个字符,在小数点分隔符之后可以是2个字符
函数前后(e,obj){
sepDec=“”
var键码;
var fieldval=对象值;
如果(window.event)keycode=window.event.keycode;
else如果(e){keycode=e.which;}
else{return true;}
//否认第一个字符为零
if(fieldval==“”&&keycode==48)
返回false;
//拒绝第一个字符为小数点
if(fieldval==“”&(keycode==44 | | keycode==46))
返回false;
//输入第一个小数点,
//但每下一次尝试输入小数点返回false
如果(fieldval!=“”&((keycode==44 | | keycode==46))){
if(fieldval.indexOf(sepDec)<0){
var newValue=fieldval+sepDec;
$(obj).val(newValue);
}
返回false;
}
var splitfield=fieldval.split(sepDec);
分点前的var;
后分点向量;
if(splitfield.length==1){
beforeDecimalPoint=splitfield[0];
后分点=”;
}
else if(splitfield.length==2){
beforeDecimalPoint=splitfield[0];
后分点=拆分字段[1];
}
if(beforeDecimalPoint.length==8&&keycode!=8&&keycode!=0){
如果(ObjistRealSt>=0 & & Obj.Stask= BeFoEdEcimalPoal.Trime+O.O.Obj.StaskStEng.您考虑外部插件,比如NG掩码,还是需要纯角度的解决方案?HMM有趣的插件,但是如果有更简单的解决方案,那就更好了,否则就必须使用已经使用的类型<代码>编号,您可以为max
属性(999.999)指定一个值,min
的对应值和step
属性0.001,当在ng模式内使用变量时,反斜杠必须转义。这是一个稍微修改的版本,反斜杠转义,它也接受逗号^\\d{1,6}([\.\\,]\\d{0,2})?
{{val | filter:{number:3}, filter:beforeDigit }}
function BeforeAfter(e, obj) {
sepDec = "."
var keycode;
var fieldval = obj.value;
if (window.event) keycode = window.event.keyCode;
else if (e) { keycode = e.which; }
else { return true; }
// denided first charatcter to be zero
if (fieldval == "" && keycode == 48)
return false;
// denided first character to be decimal point
if (fieldval == "" && (keycode == 44 || keycode == 46))
return false;
// enter first decimal point,
// but every next try to eneter decimal point return false
if (fieldval != "" && ((keycode == 44 || keycode == 46))) {
if (fieldval.indexOf(sepDec) < 0) {
var newValue = fieldval + sepDec;
$(obj).val(newValue);
}
return false;
}
var splitfield = fieldval.split(sepDec);
var beforeDecimalPoint;
var afterDecimalPoint;
if (splitfield.length == 1) {
beforeDecimalPoint = splitfield[0];
afterDecimalPoint = "";
}
else if (splitfield.length == 2) {
beforeDecimalPoint = splitfield[0];
afterDecimalPoint = splitfield[1];
}
if (beforeDecimalPoint.length == 8 && keycode != 8 && keycode != 0) {
if (obj.selectionStart >= 0 && obj.selectionStart <= 8)
return false;
}
if (afterDecimalPoint.length == 2 && keycode != 8 && keycode != 0) {
if (obj.selectionStart >= beforeDecimalPoint.length + 1 && obj.selectionStart <= beforeDecimalPoint.length + 1 + 2)
return false;
}
return true;
}