我正在使用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外观。我的桌子空间有限。所以我想显示用逗号分隔的所有值。目前,如果宽度是固定的,则值垂直。这会增加行的高度,使桌子看起来很难看。
答案 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