【问题标题】:Input mask with thousand separator ionic 3带有千位分隔符的输入掩码 ionic 3
【发布时间】:2018-02-21 16:09:29
【问题描述】:

我需要一个 thousand separator input mask 指令或 Ionic 3 应用程序。我尝试了 2 个指令。但他们都没有工作。你知道这方面的工作指令吗?

例如50,000

.html

<ion-input type="tel" [ngModel]="data?.budget" formControlName="budget" (ngModelChange)="data.budget=$event"></ion-input>

我在 Git 上记录了问题。也请看:

text-mask Issue

ng2-currency-mask Issue

【问题讨论】:

  • 你不能用管道吗?
  • 这是给input box的。我们不能在输入字段中使用pipe。它只是格式化已经存在的文本。当用户在input 框中输入numeric 内容时,我需要对其进行格式化。 @TheDictator
  • 我为我的格式化指令的 ionic 编写了一个快速版本。您想看看还是喜欢图书馆?
  • 这将是一个很棒的消息。您知道目前没有人可以使用最著名的Ionic 框架对input box 进行简单的1000 分隔符格式化。这对社区来说真的很抱歉。我认为这必须是 Ionic 框架中开箱即用的默认指令。但我知道这是一个开源项目。因此,如果您能做到这一点,Ionic 社区将高度赞赏。我们真的很喜欢npm 包。 @维加
  • 啊,我不知道找到一个这么难,但现在我知道我不确定我的是否足够好......我从一个旧项目中使用的一个改编而来,它需要对正则表达式进行一些调整。看看,但如果它在欺骗,请不要对我“生气”:(stackblitz.com/edit/ionic-5mdcm8?file=app%2Fapp.html

标签: javascript angular typescript ionic3 input-mask


【解决方案1】:

这是我的格式化版本,也适用于 ionic。

打字稿:

format(valString) {
    if (!valString) {
        return '';
    }
    let val = valString.toString();
    const parts = this.unFormat(val).split(this.DECIMAL_SEPARATOR);
    return parts[0].replace(/\B(?=(?:\d{3})+(?!\d))/g, this.GROUP_SEPARATOR) + (!parts[1] ? '' : this.DECIMAL_SEPARATOR + parts[1]);
};

unFormat(val) {
    if (!val) {
        return '';
    }
    val = val.replace(/^0+/, '');

    if (this.GROUP_SEPARATOR === ',') {
        return val.replace(/,/g, '');
    } else {
        return val.replace(/\./g, '');
    }
};

HTML:

<ion-input [(ngModel)]="budget"  pattern="^[$\-\s]*[\d\,]*?([\.]\d{0,10})?\s*$"
style="border:1px solid black" #myBudget="ngModel" (input)="budget = format(budget)"></ion-input>
<p style="color:red" *ngIf="myBudget.errors && myBudget.errors?.pattern">Enter numbers only</p>

它需要在错误管理和货币添加方面进行一些改进(它接受前导“$”符号)。我将正则表达式设置为接受小数点后 10 位的数字。

DEMO

如果您不希望输入小数而只输入数字,DEMO 将说明如何进行。

【讨论】:

  • 其实我的情况很简单。我只需要像这样格式化它:50,000No decimalsno currency。只有 1000 个分隔符。希望我能做到吗?你也可以展示那个样本吗?我对Regex一点都不擅长。希望你能在这里提供帮助:)
  • 看起来真的很酷!希望您将其改进为 Angular directive 并将其作为 Ionic 社区的 MIT 项目发布。非常感谢您,祝您好运! :)
  • 我对 ionic 一点也不熟悉(这是我的第一次尝试),但会尽我所能设置指令。谢谢你的鼓励,我真的很感激:)
  • 是的,这确实令人印象深刻。离子和角度之间没有太大区别。实际上,Ionic 是 Angular 父亲的孩子 :) 所以学习 Ionic 对你来说一定很容易,因为你是 Angular 大师。如果您需要有关 ionic 的任何支持,请告诉我。实际上,我们在开发移动应用程序时需要这种简单的用例指令。因为当我们考虑移动应用程序的性能时,模块的大小很重要。所以你的指令将成为 Ionic 社区的瑰宝:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多