2015-05-06 30 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

相关问题