p:selectonemenu onkeyup事件为大写

时间:2017-01-29 22:15:29

标签: jsf primefaces uppercase selectonemenu keyup

我正在使用p:selectOneMenu来显示数据。我使用filter="true"filterMatchMode="startsWith"来过滤数据:

<p:selectOneMenu id="mun" value="#{list}" converter="#{lookupConverter}"
                 filter="true" filterMatchMode="startsWith" 
                 validator="#{validate}">
    <p:ajax listener="#{getAll}" update="plac"/>
    <f:selectItem itemLabel="#{msg['choose.value']}" itemValue="#{null}" noSelectionOption="true" />
    <f:selectItems value="#{municipalities}"
                   var="m"
                   itemValue="#{m}"
                   itemLabel="#{m.description}"/>
</p:selectOneMenu>

我喜欢当用户开始在文本框中键入onkeyup事件时输入的文本为大写。

编辑:

当我说文本框时,我的意思是在这个红色方块上:

enter image description here

1 个答案:

答案 0 :(得分:0)

当您检查放置菜单的页面时,您可以看到输入过滤器具有或多或少的后续ID:

j_idt88:advanced_filter

基于此以及此输入将始终以advanced_filter为后缀的事实..您可以编写您的javascript代码:

<script>
   document.addEventListener('DOMContentLoaded', function() {
       addAdvancedFilterActions();
   }, false);

   var addAdvancedFilterActions = function(){
         var elements = document.querySelectorAll('[id$=advanced_filter]');

        for (var key in addAdvancedFilterActions) {
           var input = addAdvancedFilterActions[key];
           input.addEventListener('keyup',function(){
                 upper(input);
              },false);
        }
   };

   var upper = function(input){
          var inputValue = input.value;
          document.writeIn(inputValue.toUpperCase())
   };

</script>

这将遍历页面上的所有输入,并应用upper函数。试一试