2015-05-06 31 views
0

我有阿賈克斯呼叫當H特定項目的具體JavaScript函數:selectOneMenu用於選擇

<h:selectOneMenu> 
<f:selectItem itemLabel="please click"/> 
<f:selectItem itemLabel="1"/> 
<f:selectItem itemLabel="2"/> 
<f:ajax onevent="click()" /> 
</h:selectOneMenu> 

我有一個的onChange

<h:selectOneMenu onChange="click()> 
<f:selectItem itemLabel="please click"/> 
<f:selectItem itemLabel="1"/> 
<f:selectItem itemLabel="2"/>  
</h:selectOneMenu> 

,如果我嘗試選擇信息相同的屬性,它不工作。我認爲他們不存在。

我使用了ajax,onChange,但似乎選擇了一個菜單,但對selectItem沒有特別意義。

+0

你的問題是ambigious。您要求啓動一個我們理解爲JSF託管bean操作(或偵聽器)方法的「操作」,但您的代碼片段嘗試觸發JavaScript函數。此外,在問題上顯示[javascript]標記和明確使用on *屬性表明您希望將其作爲客戶端而不是服務器端。你想要什麼?更好的是,你最終試圖解決什麼問題/需求,你認爲這一切都可能是正確的解決方案? – BalusC

+0

我想通過調用js方法在客戶端執行一個操作。代碼片段適用於整個selectOneMenu(選擇菜單中的任何項目並調用js方法)。相反,我想要爲不同的選擇項目調用不同的js方法) – ashlesha

+0

爲什麼不讓函數檢查當前正在選擇哪個項目,然後再委派給正確的任務/函數?我修復了問題標題併發布了答案。 – BalusC

回答

4

只需將選定的值傳遞給JS函數,然後JS函數進一步根據它進行委託。

<h:selectOneMenu onchange="foo(this.value)"> 
    ... 
</h:selectOneMenu> 
function foo(selectedValue) { 
    switch (selectedValue) { 
     case "1": bar(); break; 
     case "2": baz(); break; 
     // ... 
    } 
} 
+0

將嘗試並更新。謝謝。 – ashlesha

相關問題