2015-07-06 84 views
0

我有一个textfield和一些selectonemenus。如果我写的东西到文本框,我想更新所选项目/下拉式菜单中的标签和周围的其他方式:使用javascript更改primefaces selectonemenu标签/值

enter image description here

的问题是我无法从文本字段访问的下拉标签事件。

JSF的文本框:

<p:inputText id="nameInput"value="#{searchProject.searchName}" onkeyup="textToDropdown()"/> 

JSF的selectOneMenu用于:

<p:selectOneMenu id="brand" value="#{searchProject.brand}"> 
    <f:selectItem itemLabel="" itemValue="" /> 
    <f:selectItems value="#{createProject.brands}" var="i" itemLabel="#{i.value} - #{i.label}" itemValue="#{i}"/> 
    <f:converter binding="#{AttributeConverter}" /> 
</p:selectOneMenu> 

我的JavaScript至今:

<script type="text/javascript"> 
    function textToDropdown(){ 
    var x = document.getElementById("selectionForm:entryActionTabs:namePatternInput"); 
    //if the text of the input is bigger than 2, fill the first dropdown   
    if(x.value.length >= 2) 
     { 
      //I DONT KNOW HOW DO ACCESS THE LABEL OF THE DROPDOWN 
     } 
    } 
</script> 

那么我是怎么试图改变标签?我检查了DOM,发现下拉菜单下方的标签与ID:

picture of the DOM

因此我想直接访问的标签,使用JavaScript来更改文本:

var label= document.getElementById("selectionForm:entryActionTabs:brand_selection2_label"); 

但我只得到一个未定义的对象...我的第二种方法是使用.innerHtml,但如何使用该标签访问标签?还包括其他三个div类。

+1

ComboBox是一个可编辑的下拉菜单,如''。但是,你没有这样的一个。所以我在你的问题中修正了不正确的术语。 – BalusC

回答

0

得到了与标签:

var label1 = document.getElementById("selectionForm:entryActionTabs:brand_selection2").getElementsByTagName("label")[0];     
      label1.innerHTML="HI"; 

,但我还是想知道为什么我不能直接使用全ID,如果有更好的方法来获取标签。我确定有一个。