[英]How to make the entire values to be selected when shift+tab is used after tab out in angular8
我有一个输入字段作为金额,其中货币格式已完成。 在这里我输入一些值并使用选项卡出来。 现在我使用 shift+tab 并转到同一字段,因此在这种情况下,我希望光标位于最后一位数字,我的意思是从右数第一个数字。 相反,我希望默认选择当前值,而不是将光标保持在最后一位。 示例:我输入213.98
它在标签退出后被格式化为$213.98
,当我再次在这里标签时,光标在 8 旁边,而不是我想要选择213.98
并且基于箭头键或鼠标我可以移动到我想要的数字改变。 此外,当我执行 ctrl+Z 时,它会撤消所有更改。
HTML:
<input type="text" class="form-control" placeholder="Amount in dolars"
formControlName="amount" autocomplete="off" currencyInput maxDigits="9" [ngClass]="{ 'is-invalid': eoInfo.amount.dirty && eoInfo.amount.invalid }">
TS:
this.eoInfoForm = this.FB.group({
amount: ['', Validators.required],
});
演示: 演示
您可以通过添加onClick="this.select();"
来自动选择所有文本根据您的输入。 如果您希望能够执行 ctrl+z,您需要为您的输入状态添加一个侦听器,如下所示: (input)="update($event.target.value);"
然后在更新方法中你可以做this.history.push(value);
. 所以现在你应该有一个名为 history 的数组,其中包含所有已传递的不同值。
现在听 ctrl+z keybind 撤消添加到输入的值(keyup.control.z)="onKeydown($event)"
并在方法中弹出历史记录并将新值设置为最新项目在历史数组中。 如果需要,您还可以将先前的值保留在单独的属性中,并将其用作中间的步骤。
我希望这就是你正在寻找的。
我不得不提一下,我从货币验证器中注释掉了 keydown 事件以向您展示。 演示
在CurrencyInputDirective
中的focus
事件期间,您可以通过简单地在您的元素上使用select
方法来选择输入。
@HostListener("focus", ["$event.target.value"])
onFocus(value) {
// on focus remove currency formatting
this.el.value = value.replace(/[^0-9.]+/g, '')
this.el.select();
}
现在您将能够通过单击Shift + Tab来选择整个选项。 至于使用Ctrl + z撤消所有更改,您可以监听keydown
事件并相应地删除输入。 在您的CurrencyInputDirective
。 添加一个新的HostListener
来监听keydown.control.z
事件。
@HostListener("keydown.control.z", ["$event.target.value"])
onUndo(value) {
this.el.value = '';
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.