首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >:选择空格键上的第一项

:选择空格键上的第一项
EN

Stack Overflow用户
提问于 2015-06-05 14:56:15
回答 1查看 1.6K关注 0票数 1

我使用的是一个<p:autoComplete multiple="true" ... />素数面组件。

我希望每次用户按空格键时,下拉列表中的第一项都会被添加到所选的项列表中。

有可能吗?

form.xhtml

代码语言:javascript
复制
<p:autoComplete
    value="#{userBean.addSelectedRepositories}"
    completeMethod="#{userBean.onCompleteRepository}"
    itemLabel="#{r.path}"
    itemValue="#{r}"
    var="r"
    converter="entityConverter"
    forceSelection="false"
    multiple="true"
    >
    <p:column>
        <h:outputText value="#{r.path}" />
    </p:column>
</p:autoComplete>

UserBean.java

代码语言:javascript
复制
public List<Repository> onCompleteRepository(String query) {
    return repositoryService.search(query);
}

因此,例如,项目是'one', 'two', 'three'

如果用户输入一个后跟空格键,我需要选择一个元素。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-06-10 14:09:26

这就是我最终得到的解决方案:

代码语言:javascript
复制
<p:autoComplete
    value="#{userBean.addSelectedRepositories}"
    completeMethod="#{userBean.onCompleteRepository}"
    itemLabel="#{r.path}"
    itemValue="#{r}"
    var="r"
    converter="entityConverter"
    forceSelection="false"
    multiple="true"
    widgetVar="autocomplete"
    >
    <p:column>
        <h:outputText value="#{r.path}" />
    </p:column>
</p:autoComplete>

然后,我在页面的末尾添加了一些javascript:

代码语言:javascript
复制
<script type="text/javascript">
jQuery( document ).ready(function($) {
    $('input[aria-autocomplete=listbox]').keyup(function(e) {
        var k = (e.keyCode ? e.keyCode : e.which);
        if (k == 32) {
            if (PF('autocomplete').items.length > 0) {
                PF('autocomplete').items.filter('.ui-state-highlight').trigger('click');
            }
            e.preventDefault();
        }
    });
});
</script>

当我将组件名称放入javascript中时,解决方案并不完美。此解决方案不处理粘贴事件,因此无法将粘贴的项转换为选定的值。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30669670

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档