使用jQuery更改p:selectOneMenu的项目

我有一个PrimeFaces 5.1

,它在DOM中生成以下选择:

  -- Year -- 2015 2014 2013 2012 2011 2010 2009  

我有一个

触发一个jQuery函数,它将处理我的

 

jQuery函数:

 function changeDropDownList() { $('[id$=selectYear_input]')[0].selectedIndex = 2; } 

未更新。 这是怎么造成的,如何解决?

基本上是上的

层,它在视觉上是隐藏的。 DOM中任何更改都不会反映在

。 它只发生在另一个方向。

但它有一堆附加的事件监听器,应该反映在隐藏的 。 一种方法是在菜单面板中触发感兴趣的.ui-selectonemenu-item上的click事件。

鉴于一个

  

您可以在jQuery中选择第3项,如下所示

 PF("selectYear").panel.find(".ui-selectonemenu-item:eq(2)").click(); 

或者,您也可以通过 (最终使用jQuery的$.ajax() )来完成它:

  ...  ...    

这只是一个小小的往返。

根据3.4到5.1的PF文档,如果在p:selectOneMenu上分配widgetVar属性,则可以在窗口小部件上调用selectValue(value)。

这会选择指定的值,但假设您知道目标值字符串和大小写。

它不适用于数字索引。