2010-03-26 41 views
0

我有JSF這樣的代碼:如何從JavaScript獲取元素在JSF 2.0

<h:inputText id="from" value="#{fromToMBean.fromName}"/> 

我想通過ID(from)從JavaScript得到這個元素,但我不能,因爲在生成的HTML它是j_idt8:from

我怎樣才能得到這個元素在eg jQuery的?有什麼辦法強制JSF2不要更改ID?

+0

可能重複[如何使用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

+0

[我在這裏回答了這個問題。](http://stackoverflow.com/questions/6045307/how-can-i-know-the-id-of -a-JSF組分那麼I-可以使用式的JavaScript) – ftravers 2011-05-20 07:13:18

回答

2

您可以使用只分配給此元素的自定義類,並使用css選擇器或向表單分配一個id並獲取ID爲formid:from的元素。

0

在JSF 1.2中,您可以使用forceId =「true」。我不確定您是否可以在JSF 2中使用t:input,但您應該可以。那麼它在HTML中的ID就是你所期望的。

2

有什麼辦法可以強制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。

0

你可以使用jQuery。簡單地說,使用一個選擇器來定義它應該包含的文本。事情是這樣的:

$("input[name*='from']") 

'* ='用來說,name屬性包含一些字符串。還存在具有類似含義的'〜='

有關詳細解釋和舉例參觀http://api.jquery.com/attribute-contains-selector/