Primefaces AutoComplete客户端和外观更改

时间:2014-07-03 09:35:00

标签: javascript jquery jsf primefaces

我正在使用Primefaces 3.5和jsf 2.0。我有一个数据表,其中包含一个包含所有行中multiple = "true"的自动完成组件的列。数据表在每行中都有用于行选择的复选框。表外还有一个自动完成组件(称为组组件)。只要组组件中的值发生更改,相同的值就会出现在表的选定行中的所有自动完成组件中。 为此,我想仅在客户端更改表中的自动完成组件的值。 我面临的两个问题是:

1.如何在multiple="true"时在javascript中设置/获取自动完成组件的值?我能够mulitple="false"使用$(autocomplete).input.val();时设置/获取但是当mulitple =“true”时无法找到

更新:我发现在mulitple ="true"使用$(autocomplete).hinput.val()时获取值。但我仍然无法找到如何设置值。

2当multiple =“true”时,如何更改自动完成功能的ui外观。我的桌子空间有限。所以我想显示用逗号分隔的所有值。目前,如果宽度是固定的,则值垂直。这会增加行的高度,使桌子看起来很难看。

1 个答案:

答案 0 :(得分:3)

在评论中,为了设置值,您可以根据this使用以下内容:

 $this = PF('autoCompleteWV');// or if you use 3.5 and older use autoCompleteWv without PF shortcut
 var itemDisplayMarkup = '<li data-token-value="' + item.attr('data-item-value') + '"class="ui-autocomplete-token ui-state-active ui-corner-all ui-helper-hidden">';
 itemDisplayMarkup += '<span class="ui-autocomplete-token-icon ui-icon ui-icon-close" />';
 itemDisplayMarkup += '<span class="ui-autocomplete-token-label">' + item.attr('data-item-label') + '</span></li>';

  $this.inputContainer.before(itemDisplayMarkup);
  $this.multiItemContainer.children('.ui-helper-hidden').fadeIn();
  $this.input.val('').focus();

  $this.hinput.append('<option value="' + itemValue + '" selected="selected"></option>');

现在要清空自动填充功能,您可以根据this使用以下内容:

PF('autoCompleteWV').jq.find('.ui-icon-close').click();

要更改自动填充标记或标记的样式,您可以在此类上应用修改

.ui-autocomplete-token