【发布时间】:2017-08-01 16:35:18
【问题描述】:
我正在尝试在数据表上实现键盘箭头导航。
为此,我在该 datatable 的每个列组件中添加事件 onkeydown,然后它调用一个 JavaScript 函数,该函数将评估按下的按钮是否为箭头键。如果是,它将focus() 或click() 下一个或上一个组件。一切正常,直到该组件是可编辑的,即在 上。
示例代码:
<p:column id="column3" headerText="column test">
<p:cellEditor >
<f:facet name="output" >
<h:outputText value="#{beneficiary.lista.selectedValue}" styleClass="required" />
</f:facet>
<f:facet name="input">
<p:selectOneMenu id="sel3" onkeydown="alert('down')" onkeyup="alert('up')" onchange="alert('change')"
value="#{beneficiary.lista.selectedKey}" filter="true"
filterMatchMode="contains" required="true" editable="true">
<f:selectItem itemLabel=" " itemValue=" " />
<f:selectItems
value="#{beneficiary.lista.possibleValues}"
var="selection" itemValue="#{selection.key}"
itemLabel="#{selection.value}" />
</p:selectOneMenu>
</f:facet>
</p:cellEditor>
</p:column>
在这里,我可以进行 click() 并获得焦点。我能够在列表中的值之间切换,这将触发 onchange 事件。但是,当我再次单击它进行编辑时,onkeyup 和 onkeydown 都不会被触发。
更新: 按照建议,我在那里写了一些东西(“简单测试”)后确实检查了元素,这就是我得到的:
<div class="ui-cell-editor-output" style="display: block;">
<span class="required">Simple Test</span>
</div>
<div class="ui-cell-editor-input" style="display: none;">
<div class="ui-selectonemenu ui-widget ui-state-default ui-corner-all" id="contentForm:newtable:0:sel3">
<div class="ui-helper-hidden-accessible">
<input name="contentForm:newtable:0:sel3_focus" id="contentForm:newtable:0:sel3_focus" type="text" autocomplete="off">
</div>
<div class="ui-helper-hidden-accessible">
<select name="contentForm:newtable:0:sel3_input" tabIndex="-1" id="contentForm:newtable:0:sel3_input" onkeydown="alert('down')" onkeyup="alert('up')" onchange="alert('change');">
<option value=" "></option>
<option value="OPTION1">Option 1 </option>
<option value="OPTION2">Option 2</option>
<option value="OPTION3">Option 3</option>
</select>
</div>
<input name="contentForm:newtable:0:sel3_editableInput" class="ui-selectonemenu-label ui-inputfield ui-corner-all" type="text" value="Simple Test">
<div class="ui-selectonemenu-trigger ui-state-default ui-corner-right">
<span class="ui-icon ui-icon-triangle-1-s ui-c"></span>
</div>
/div>
</div>
你们过去有没有遇到过类似的问题?有什么解决方案/建议吗?
【问题讨论】:
标签: javascript jsf primefaces selectonemenu onkeyup