gpt4 book ai didi

java - 如何抓取 "shift+anykey"的NativeEvent.getKeyCode

转载 作者:行者123 更新时间:2023-11-30 11:30:14 25 4
gpt4 key购买 nike

这是我另一个 question 的延续.我正在检查是否按下了有效字符或数字

有效字符 - A 到 Z 和 a-z,这些字符可以使用“SHIFT+A=a”输入,反之亦然,“SHIFT+a=A”。我限制用户输入有效字符以外的字符

无效字符 - “SHIFT+1=!”到“SHIFT+0=)”

这是一个代码片段,我试过了但不确定如何获取“SHIFT+...”的 keyCode

    @Override
public void onBrowserEvent(Context context, Element parent, String value,
NativeEvent event, ValueUpdater<String> vUpdater){

if (event.getShiftKey()) {
int code = event.getKeyCode();
//only a-z and A-Z are allowed if shift key is pressed
if ((code >= 65 && code <= 90) || (code >= 97 && code <= 122)) {
validShiftKeyPressed = true;
} else {
validShiftKeyPressed = false;
}
}

if (validShiftKeyPressed &&
(event.getKeyCode()>=48 && event.getKeyCode()<=57)){
\\do some operation
}

int code = event.getKeyCode();

代码的值将始终为 16,validShiftKeyPressed 将始终为 false。

我想检查按下SHIFT+ASHIFT+1 或任何其他组合的值。有什么办法可以做到这一点吗?

最佳答案

这并不完全是您确切问题的答案,但我不确定您所走的道路是否会给您想要的东西。如果我错了,请忽略此答案。

我使用以下代码的变体来防止非数字用户输入,但仍允许用户四处移动和编辑该字段。我将“Character.isLetter(c)”添加到此代码段以允许字母(大写或小写)。 GWT 仿真类声明它只处理 ASCII 字符。您可以在 gwt-user.jar 的“/gwt-user/com/google/gwt/emul/java/lang/Character”中找到模拟类,以查看它在 javascript-land 中的作用。

请注意,此类孤立的代码并不包含针对您的用户的完整输入约束和验证解决方案。例如,它不会阻止用户将他们想要的任何内容粘贴到字段中。我通常会在保存之前尝试对页面进行全面验证,以确保我的字段的最终输入有效。我使用 GWT 验证功能(bean 验证)来执行此操作。这会捕获我无法通过这样的代码阻止的任何输入中断。

protected void handleKeyPress(KeyPressEvent event) {

// get the char code
char charCode = event.getCharCode();
if (charCode == '\u0000') {
/*
* On some browsers the charcode does not exist in the keypress
* event. In this case we switch over to the keycode.
*/
charCode = (char)event.getNativeEvent().getKeyCode();
}

// prevent input other than [a-z|A-Z|0-9] but still allow basic navigation and editing keys
if ((!Character.isDigit(charCode)) && (!Character.isLetter(charCode)) &&
(charCode != (char)KeyCodes.KEY_TAB) &&
(charCode != (char)KeyCodes.KEY_BACKSPACE) &&
(charCode != (char)KeyCodes.KEY_ENTER) &&
(charCode != (char)KeyCodes.KEY_HOME) &&
(charCode != (char)KeyCodes.KEY_END) &&
(charCode != (char)KeyCodes.KEY_LEFT) &&
(charCode != (char)KeyCodes.KEY_UP) &&
(charCode != (char)KeyCodes.KEY_RIGHT) &&
(charCode != (char)KeyCodes.KEY_DOWN)) {
event.preventDefault();
}
}

关于java - 如何抓取 "shift+anykey"的NativeEvent.getKeyCode,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17895337/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com