Dart 无法将core-a11y键与输入一起使用
飞镖,聚合物0.5,飞镖 在一个页面中,我有一些Dart 无法将core-a11y键与输入一起使用,dart,polymer,dart-polymer,core-elements,Dart,Polymer,Dart Polymer,Core Elements,飞镖,聚合物0.5,飞镖 在一个页面中,我有一些div元素,里面有core-a11y-keys键,键是“上下左右”。它工作得很好,一些动作是在按键按下后发生的 我在页面上也有输入字段。问题是我不能在其中使用箭头键,因为core-a11y-keys 问题是:如何避免破坏行为 HTML: 确保core-a11y-keys的target属性确实存在,并且指向div,否则它将应用于整个页面,包括您的输入。有关如何执行此操作的更多详细信息,请参见此处: 如果您的input是您的core-a11y-keys
div
元素,里面有core-a11y-keys
键,键是“上下左右”。它工作得很好,一些动作是在按键按下后发生的
我在页面上也有输入字段。问题是我不能在其中使用箭头键,因为core-a11y-keys
问题是:如何避免破坏行为
HTML:
确保
core-a11y-keys
的target
属性确实存在,并且指向div
,否则它将应用于整个页面,包括您的输入。有关如何执行此操作的更多详细信息,请参见此处:
如果您的input
是您的core-a11y-keys
所针对的div
的子项,则它将执行您指示它在div
中的任何位置执行的操作:拦截击键。在这种情况下,您需要处理输入中的onKeyPress
事件,如
:
我没有尝试过这个,可能您需要使用onKeyUp
和onKeyDown
,如中所示。确保core-a11y-keys
的target
属性实际上存在并指向div
,否则它将应用于整个页面,包括您的输入。有关如何执行此操作的更多详细信息,请参见此处:
如果您的input
是您的core-a11y-keys
所针对的div
的子项,则它将执行您指示它在div
中的任何位置执行的操作:拦截击键。在这种情况下,您需要处理输入中的onKeyPress
事件,如
:
我没有试过这个,可能你需要onKeyUp
和onKeyDown
来代替。我不明白这个问题。你能提供一些代码来重现这个问题吗?我不明白这个问题。您能提供一些代码来重现问题吗?很抱歉造成误导,输入不在div中,且core-a11y-keys
。我不需要在输入上捕获事件,我只需要输入就可以正常工作。在我的情况下,不可能在其中使用箭头键,只是不起作用。这个解决方案对我的问题不起作用。我无法捕获目标div上的事件,因为没有任何具有可聚焦接口的元素。我只能捕捉身体上的事件。您问题中的代码没有显示target
属性。再看我的答案,第一句话。您是否包含目标?是的,您关于target
属性的看法是正确的。我和目标打过球,可以从不同的目标中分割事件。但这对我来说毫无意义,因为我的div
不包含任何可聚焦元素。我可以将这个div作为目标,但我从未得到任何事件。我的问题是,我必须捕获主体级别的事件,在这种情况下,它会中断放置在主体标记某处的输入(当然!)。core-a11y-keys在哪里并不重要。很抱歉造成误解,输入不在带有core-a11y-keys
的div中。我不需要在输入上捕获事件,我只需要输入就可以正常工作。在我的情况下,不可能在其中使用箭头键,只是不起作用。这个解决方案对我的问题不起作用。我无法捕获目标div上的事件,因为没有任何具有可聚焦接口的元素。我只能捕捉身体上的事件。您问题中的代码没有显示target
属性。再看我的答案,第一句话。您是否包含目标?是的,您关于target
属性的看法是正确的。我和目标打过球,可以从不同的目标中分割事件。但这对我来说毫无意义,因为我的div
不包含任何可聚焦元素。我可以将这个div作为目标,但我从未得到任何事件。我的问题是,我必须捕获主体级别的事件,在这种情况下,它会中断放置在主体标记某处的输入(当然!)。核心a11y键在哪里并不重要。
<body>
<div id="widgetContainer">
<core-a11y-keys target="{{body}}" keys="up down left right"
on-keys-pressed="{{widgetContainer_on_move_keys}}">
</core-a11y-keys>
</div>
<input id="txtInput">
</body>
handleInputKeyStrokes(Event e) {
// You'll need one or both of these; not sure which.
e.preventDefault();
e.stopPropagation();
}