在 type=text Ionic 的离子输入中只允许数字
Allow only number in a ion-input with type=text Ionic
我需要进行以下输入,以便它只接受数字:
<ion-input formControlName="quantity"></ion-input>
我知道这可以通过 type=number 实现,但出于其他原因我只能使用类型文本。是否可以使用文本类型来做到这一点?还有我如何验证最小和最大数量?
也许你可以在 TypeScript 文件中使用按键事件来实现这个技巧,并且只授权数字……
在侦听器中,您可以防止默认事件,停止其传播,并且当它不是数字时 return false
在你的 component.html
:
`<ion-input (ionInput)="onInput($event)" maxlength="3" ></ion-input>`
然后在您的 component.ts
文件中:
onInput($event:any) {
let theEvent = $event || window.event,
key = theEvent.target.value,
regex = /[0-9]+/g
if( !regex.test(key) ) {
let resp = $event.target.value.match(regex)
$event.target.value = resp ? resp.join('') : ''
}
}
当检测到输入时,只需从值中删除任何不是数字的内容。
可以通过以下方式精确地完成:
在您的 .ts 文件中:
numericOnly(event): boolean {
let pattern = /^([0-9])$/;
let result = pattern.test(event.key);
return result;
}
在您的 .html 文件中:
<ion-input
class="input"
inputmode="numeric"
type="number"
(keypress)="numericOnly($event)"
>
</ion-input>
试试这个:
我知道它不适用于输入类型="文本"。但它解决了 Number Only 问题。
<ion-item>
<ion-label>Number</ion-label>
<ion-input type="tel" maxlength="10"></ion-input>
</ion-item>
参考这个link:https://github.com/ionic-team/ionic-framework/issues/7072#issuecomment-301675025
在您的 html 文件中
<ion-input (ionInput)="numeric($event)" formControlName="quantity"></ion-input>
在你的ts文件中
numeric(event){
let patter = /^([0-9])$/;
let val = pattern.test(event.key);
return val;
}
我需要进行以下输入,以便它只接受数字:
<ion-input formControlName="quantity"></ion-input>
我知道这可以通过 type=number 实现,但出于其他原因我只能使用类型文本。是否可以使用文本类型来做到这一点?还有我如何验证最小和最大数量?
也许你可以在 TypeScript 文件中使用按键事件来实现这个技巧,并且只授权数字…… 在侦听器中,您可以防止默认事件,停止其传播,并且当它不是数字时 return false
在你的 component.html
:
`<ion-input (ionInput)="onInput($event)" maxlength="3" ></ion-input>`
然后在您的 component.ts
文件中:
onInput($event:any) {
let theEvent = $event || window.event,
key = theEvent.target.value,
regex = /[0-9]+/g
if( !regex.test(key) ) {
let resp = $event.target.value.match(regex)
$event.target.value = resp ? resp.join('') : ''
}
}
当检测到输入时,只需从值中删除任何不是数字的内容。
可以通过以下方式精确地完成:
在您的 .ts 文件中:
numericOnly(event): boolean {
let pattern = /^([0-9])$/;
let result = pattern.test(event.key);
return result;
}
在您的 .html 文件中:
<ion-input
class="input"
inputmode="numeric"
type="number"
(keypress)="numericOnly($event)"
>
</ion-input>
试试这个:
我知道它不适用于输入类型="文本"。但它解决了 Number Only 问题。
<ion-item>
<ion-label>Number</ion-label>
<ion-input type="tel" maxlength="10"></ion-input>
</ion-item>
参考这个link:https://github.com/ionic-team/ionic-framework/issues/7072#issuecomment-301675025
在您的 html 文件中
<ion-input (ionInput)="numeric($event)" formControlName="quantity"></ion-input>
在你的ts文件中
numeric(event){
let patter = /^([0-9])$/;
let val = pattern.test(event.key);
return val;
}