我正在编写一个按键事件,该事件将对某些控制字符执行特殊功能,但会将任何可打印的字符插入字符串中。
this.handle_keypress = function(event) {
let callback = this.control_function[event.key];
if(callback) {
callback.bind(this)(event);
}
else {
this.myText += event.key;
}
}
this.element.addEventListener('keypress', this.handle_keypress.bind(this));
但这会将未映射的控制字符的文本插入到我的字符串中(例如,“ LeftArrow”或“ Backspace”)。如何辨别哪些字符是可打印字符,哪些是控制字符?
回到过去,我将使用event.which或event.charCode,但现在这些标记为已弃用。
据我所知,我无法使用输入事件,因为我没有在文本区域或输入字段中输入内容。
我正在Firefox中运行它。
答案 0 :(得分:0)
在MDN页面上查看KeyboardEvent属性的文档: https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent
对于KeyboardEvent.keyCode,他们提到:
不推荐使用此属性;您应该使用KeyboardEvent.key 相反,如果有的话。
对于KeyboardEvent.charCode,他们提到:
警告:不推荐使用此属性;你应该使用 如果可以的话,请改用KeyboardEvent.key。
因此,基本上,“ charCode”和“ keyCode”已被“ code”和“ key”所取代。
此外,要识别控制字符并避免打印它们,您可以尝试:
创建被忽略字符的数组
var unsupportedKeyCharacters = ["Shift", "Escape", "ArrowUp", "ArrowDown", "ArrowLeft", "ArrowRight", "Enter"];
调用该函数以检查输入的字符是否可打印
var isSupportedKey = function (keyCharacter) {
var isKeySupported = false;
var unsupportedKeyCharacters = ["Shift", "Escape", "ArrowUp", "ArrowDown", "ArrowLeft", "ArrowRight", "Enter"];
for (var i = 0; i < unsupportedKeyCharacters.length; i++) {
if (unsupportedKeyCharacters[i] === keyCharacter) {
isKeySupported = false;
break;
}
}
return isKeySupported;
}
调用函数以验证输入
答案 1 :(得分:0)
无法立即确定select
t.primary_key,
t.ticket_name,
tt.ticket_name ticket_name2
from tablename t left join tablename tt
on tt.primary_key = t.contingent_on
order by t.primary_key
是否是控制字符。
但鉴于此:
您可以编写一个代码来决定是否在以下两个方面进行选择:
| primary_key | ticket_name | ticket_name2 |
| ----------- | ---------------- | ---------------- |
| 1 | site preparation | null |
| 2 | tender process | null |
| 3 | construction | site preparation |