OnKeyDown事件不会立即更新,OnKeyUp是

时间:2014-02-27 09:45:47

标签: events dart dart-html

我刚刚开始关注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();
}

1 个答案:

答案 0 :(得分:3)

那是因为input元素还没有值。它在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]);