簡體   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