Nexus Player附带DPad (蓝牙遥控器)。它的方向键就像键盘上的标准上/下/左/右按钮。多亏了这一点,您可以像从标准 PC/Mac 一样导航 HTML 编写的应用程序(webview) 。DPad还有一个选择按钮,webview 将其检测为Enter键。按Enter/Select键适用于标准按钮和href链接,但不适用于复选框和单选按钮。
PC 上的单选按钮和复选框仅在按下Space键时更改状态。不幸的是,DPad没有Space键。让这个工作的诀窍是:
- 检测是否按下了任何键:
onkeydown
- 检测是否按下了 Enter/Select 键:
if(event.keyCode == 13){}
- 模拟单击复选框/单选按钮:
this.click()
- 防止按下 Enter/Select 时提交表单的默认操作:
event.preventDefault()
这给了我们一个纯粹用JavaScript编写的简单的“hack”,它与AngularJS一起工作:onkeydown="if (event.keyCode == 13) {this.click(); event.preventDefault()}"
在我的情况下,复选框元素如下所示:
<input ng-change="MyFunction()"
ng-model="MyVariables"
ng-required="!MyVariables"
name="MyRadioButton"
id="MyRadioButton"
value="MyValue"
type="radio"
onkeydown="if (event.keyCode == 13) {this.click(); event.preventDefault()}"/>
注意:您也可以更改复选框或单选按钮的状态,this.checked
但在我使用AngularJS的情况下,这不起作用(ng-change 或 ng-click 不会注意到以编程方式对复选框/单选按钮进行的更改)。
所以,我的问题来了。有没有更多“正确”的方法来实现这一目标?