繁体   English   中英

如何在离子 1 中只允许输入一个小数点

[英]How to allow only one decimal point for input of type number in ionic 1

我正在使用数字类型的输入,它允许多个小数点,所以我尝试使用正则表达式不允许超过一个小数点,但即使在使用正则表达式后我也面临同样的问题,谁能告诉我如何只允许ionic1 中输入类型数字的小数点后一位

Html:

<input stopccp focus-me class="inputContainer trade_input" type="number" name="" ng-model="vm.total_amount[$index]" ng-change="vm.onTotalCost()" limit-char limit="5" ng-keyup="vm.decimalcheck(vm.total_amount[$index])"  >

function 中的正则表达式:

function decimalcheck (element) {
  $log.log('decimalcheck got called', element);
  var regex = /\d*\.?\d?/g;
  return regex.exec(element);
}

脚本

$('.number').keypress(function(event) {
    var $this = $(this);
    if ((event.which != 46 || $this.val().indexOf('.') != -1) &&
       ((event.which < 48 || event.which > 57) &&
       (event.which != 0 && event.which != 8))) {
           event.preventDefault();
    }

    var text = $(this).val();
    if ((event.which == 46) && (text.indexOf('.') == -1)) {
        setTimeout(function() {
            if ($this.val().substring($this.val().indexOf('.')).length > 3) {
                $this.val($this.val().substring(0, $this.val().indexOf('.') + 3));
            }
        }, 1);
    }

    if ((text.indexOf('.') != -1) &&
        (text.substring(text.indexOf('.')).length > 1) &&
        (event.which != 0 && event.which != 8) &&
        ($(this)[0].selectionStart >= text.length - 1)) {
            event.preventDefault();
    }      
});

$('.number').bind("paste", function(e) {
var text = e.originalEvent.clipboardData.getData('Text');
if ($.isNumeric(text)) {
    if ((text.substring(text.indexOf('.')).length > 3) && (text.indexOf('.') > -1)) {
        e.preventDefault();
        $(this).val(text.substring(0, text.indexOf('.') + 3));
   }
}
else {
        e.preventDefault();
     }
});

HTML

<input type="text" class="number" />

这是你的答案

<input type="text" pattern="\d+\.?\d?(?!\d)" />

我想你只是想念start(^)和end($)运算符

function decimalcheck (element) {
  $log.log('decimalcheck got called', element);
  var regex = /^\d*\.?\d?$/g;
  return regex.exec(element);
}

试试这个正则表达式:

^\d*\.?\d+$

单击“演示”

说明:

  • ^ - 字符串的开始
  • \\d* - 0+位数
  • \\.? - 0或1小数点
  • \\d+ - 1+位数(因此必须在小数点后至少有一位数,如果存在的话)
  • $ - 结束字符串

OUTPUT: 在此输入图像描述

在你的 html 中试试这个,它对我有用

pattern = "^\d*\.?\d+$"

这适用于输入字段使用模式和事件 onInput

<input
   maxLength={4}
   type="text"
   pattern="\d+\.?\d?(?!\d)" // [0-9]*\.?[0-9]*
   value={unitProgress}
   onInput={(e: any) => {
      const valueChange = e.target.validity.valid 
                             ? e.target.value 
                             : unitProgress;
      setUnitProgress(valueChange);

  }}
                                       
/>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM