我刚开始看Dart
。编辑<p>
时,我正在更新<input type="form">
标记。
但是,当我使用onKeyDown
事件时,它不会立即更新,但会延迟1次按键。因此,如果我按AAA,它将仅显示AA。
如果我使用onKeyUp
,AAA将给我AAA。
为什么在使用onKeyDown
时未按预期更新?
这是代码:
import 'dart:html';
TextInputElement inputText;
ParagraphElement pargraphText;
void main() {
inputText = querySelector("#text");
pargraphText = querySelector("#paragraphText");
// inputText.onKeyDown.listen(updateTekst);
inputText.onKeyUp.listen(updateTekst);
}
void updateTekst(Event e) {
pargraphText.text = inputText.value.toUpperCase();
}
最佳答案
那是因为输入元素还没有值。它在keyPress或keyUp上获取值,但在keyDown上尚未获取。
如果您使用事件中的值而不是输入字段中的值,那么即使是第一个keyDown也会获得该值。
您可以使用e.keyCode(未在keyDown上设置charCode)
import 'dart:convert';
...
// doesn't distinguish between upper/lower case (you have to check e.shiftKey)
UTF8.decode([e.keyCode]);
关于events - OnKeyDown事件不会立即更新,OnKeyUp是,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22064653/