我有JSF這樣的代碼:如何從JavaScript獲取元素在JSF 2.0
<h:inputText id="from" value="#{fromToMBean.fromName}"/>
我想通過ID(from
)從JavaScript得到這個元素,但我不能,因爲在生成的HTML它是j_idt8:from
我怎樣才能得到這個元素在eg jQuery的?有什麼辦法強制JSF2不要更改ID?
我有JSF這樣的代碼:如何從JavaScript獲取元素在JSF 2.0
<h:inputText id="from" value="#{fromToMBean.fromName}"/>
我想通過ID(from
)從JavaScript得到這個元素,但我不能,因爲在生成的HTML它是j_idt8:from
我怎樣才能得到這個元素在eg jQuery的?有什麼辦法強制JSF2不要更改ID?
您可以使用只分配給此元素的自定義類,並使用css選擇器或向表單分配一個id並獲取ID爲formid:from
的元素。
在JSF 1.2中,您可以使用forceId =「true」。我不確定您是否可以在JSF 2中使用t:input,但您應該可以。那麼它在HTML中的ID就是你所期望的。
爲了實現組件的完整ID,請使用EL隱式對象及其屬性,如#{cc.clientId}
和#{component.clientId}
。來源:Acquire full prefix for a component clientId inside naming containers with JSF 2.0。
有什麼辦法可以強制JSF2不改變id?
您可以設置prependId="false"
這種方式生成的HTML這將是從到位j_idt8的:從。
prependId:標誌,指示此窗體是否應該在的clientId代 過程中預先準備 其ID到其後代的ID。如果此標誌未設置,則默認值爲true。
我該如何在例如jQuery的?
您可以在jQuery中使用ancestorComponent:from
來獲取此元素。
在j_idt8其實j_idt8:從是自動生成的,例如你<h:inputText/>
祖先組件的ID
<h:form id="form">
<h:inputText id="from" value="#{fromToMBean.fromName}"/>
</h:form>
現在產生的輸入文本的ID是形式:從
如果您沒有爲瀏覽器生成的組件提供標識動態地。所以不要忘記爲組件提供ID。
你可以使用jQuery。簡單地說,使用一個選擇器來定義它應該包含的文本。事情是這樣的:
$("input[name*='from']")
'* ='用來說,name屬性包含一些字符串。還存在具有類似含義的'〜='。
有關詳細解釋和舉例參觀http://api.jquery.com/attribute-contains-selector/
的
可能重複[如何使用jQuery選擇PrimeFaces UI或JSF組件?](http://stackoverflow.com/questions/7927716/how-to-select-primefaces -ui-or-jsf-components-using-jquery) – BalusC 2012-11-28 13:40:20
[我在這裏回答了這個問題。](http://stackoverflow.com/questions/6045307/how-can-i-know-the-id-of -a-JSF組分那麼I-可以使用式的JavaScript) – ftravers 2011-05-20 07:13:18