2017-01-29 2 views
1

J'utilise p:selectOneMenu pour afficher des données. J'utilise filter="true" et filterMatchMode="startsWith" pour les données de filtrage:p: selectonemenu onkeyup event à majuscule

<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> 

Et j'aime quand taper de démarrage de l'utilisateur dans onkeyup zone de texte événement texte saisi pour être en majuscules.

Edit:

Quand je dis zone de texte que je veux dire sur ce carré rouge:

enter image description here

+0

où est la zone de texte? le menu est-il modifiable? –

Répondre

0

Lorsque vous inspectez la page où le menu est placé, vous pouvez voir que le filtre d'entrée a plus ou moins suivant id:

j_idt88:advanced_filter 

sur la base de cela et le fait que cette entrée sera toujours suffixé par advanced_filter. . Vous pouvez écrire votre code 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> 

Cela itérer toutes les entrées comme celui-ci sur la page et appliquer la fonction supérieure. Essayez-le