[英]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+位數(因此必須在小數點后至少有一位數,如果存在的話) $
- 結束字符串 在你的 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.