html列表值按键事件更改

时间:2015-04-18 23:11:17

标签: dom dart

启动Order游戏后,将游戏等级从1更改为2。 使用向左箭头键,列表的当前值从2变为1。 我怎样才能避免这种变化?

游戏中使用关键箭头(关键事件)来移动切片。选择元素(级别)用于更改电路板的大小。 当用户更改级别并单击新按钮时,键事件不会影响级别。然而,如果用户改变等级(例如,从2变为1)然后使用键箭头(例如,左箭头键),则等级改变(从2变为1)。我想禁用该更改。

我使用不成功

document.onKeyDown.listen((KeyboardEvent event) {
  levelSelect.disabled = true;
  ...
  levelSelect.disabled = false;
}); 

在lib / view / board.dart文件中的Board类中。

Source code

1 个答案:

答案 0 :(得分:0)

当您单击select元素以更改值时,select元素将获得焦点(并将其从页面加载后的body元素中移除)。结果是select元素处理键事件而不是您注册自定义键事件处理程序的文档。

您尝试将disabled设置为false并返回true可能会使用Futures来允许浏览器处理状态更改。

更简单的解决方案是使用blur()方法使select元素从自身中移除焦点:

levelSelect.onChange.listen((Event e) {
  levelSelect.blur();
  level = int.parse(levelSelect.value);
});