1

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

1 回答 1

4

那是因为输入元素还没有值。它在 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]); 
于 2014-02-27T09:55:15.700 回答