[英]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.