在 type=text Ionic 的离子输入中只允许数字

Posted

技术标签:

【中文标题】在 type=text Ionic 的离子输入中只允许数字【英文标题】:Allow only number in a ion-input with type=text Ionic 【发布时间】:2019-06-09 10:31:54 【问题描述】:

我需要进行以下输入,以便它只接受数字:

<ion-input formControlName="quantity"></ion-input>

我知道这可以通过 type=number 来实现,但出于其他原因我仅限于使用类型文本。是否可以使用类型文本来做到这一点?还有如何验证最小和最大金额?

【问题讨论】:

如果我理解正确,您愿意使用 Angular/任何其他基于 JS 的限制来限制用户输入吗?? 正确,在这种情况下是离子。 【参考方案1】:

在您的 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;

【讨论】:

【参考方案2】:

试试这个:


我知道它不适用于输入 type="text"。但它解决了仅数字问题。

<ion-item>
   <ion-label>Number</ion-label>
   <ion-input type="tel" maxlength="10"></ion-input>
</ion-item>

参考此链接:https://github.com/ionic-team/ionic-framework/issues/7072#issuecomment-301675025

【讨论】:

您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center。【参考方案3】:

可以通过以下方式精确完成:

在您的 .ts 文件中:

numericOnly(event): boolean 
   let patter = /^([0-9])$/;
   let result = pattern.test(event.key);
   return result;

在您的 .html 文件中:

<ion-input
        class="input"
        inputmode="numeric"
        type="number"
        (keypress)="numericOnly($event)"
      >
</ion-input>

【讨论】:

【参考方案4】:

在你的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('')  : ''
 

当检测到输入时,只需从值中删除任何不是数字的内容。

【讨论】:

【参考方案5】:

也许你可以用 TypeScript 文件中的按键事件来解决这个问题,并且只授权数字…… 在监听器中,您可以阻止默认事件,停止它的传播并在它不是数字时返回 false

【讨论】:

以上是关于在 type=text Ionic 的离子输入中只允许数字的主要内容,如果未能解决你的问题,请参考以下文章

添加离子的页面

如何在 Angular/Ionic 框架中设置离子输入的样式?

离子输入隐藏在键盘下方 - ionic 2

如何在 Ionic 2+ 中换行离子输入?

如何在Ionic 2中制作像按钮一样的离子网格

Ionic2 离子输入在 iOS 模拟器上不起作用