如何解决如何在GWT文本框中检索PASTE复制粘贴事件的值?
| SO成员大家好, 我要阻止用户复制粘贴到我的TextBox中的值,并且仅当这些值不符合特定条件时才这样做。 例如,我创建了一个DigitsOnlyTextBox,它将用于电话号码。 我已经做到了,因此只能在框中键入“ 0”个字符,并且用户不能使用来将值复制粘贴到其中:this.sinkEvents(Event.ONPASTE);
和
public void onBrowserEvent(Event event) {
super.onBrowserEvent(event);
// Permet d\'empêcher le copier-coller,donc d\'entrer des caractères non-numériques
if (event.getTypeInt() == Event.ONPASTE) {
event.stopPropagation();
event.preventDefault();
}
}
但是我想验证复制粘贴的字符串是否为“仅数字”,如果是,则让该事件发生(因此添加文本)。
tl; dr:
看标题
感谢您的时间。
真诚的
解决方法
根据MDC:
当前没有仅DOM方式来获取要粘贴的文本
IMO,最好让“粘贴”发生,然后“重写”文本框的值以去除非数字(实际上,我什至宁愿只在onValueChange上做)或简单地标记如果该框的值不是仅数字的,则该框为无效(例如IntegerBox所做的操作)。
, 只需将旧值保存在局部变量中,然后在执行逻辑后立即保存,如果该值不正确,则保留旧文本。
@Override
public void onBrowserEvent(Event event)
{
super.onBrowserEvent(event);
final String oldValue = getValue();
switch (event.getTypeInt())
{
case Event.ONPASTE:
Scheduler.get().scheduleDeferred(new ScheduledCommand()
{
@Override
public void execute()
{
if(<not ok>)
setValue(oldValue);
}
});
break;
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。