【发布时间】:2013-01-03 13:54:55
【问题描述】:
<p:autoComplete> 的 readonly 属性不起作用。设置readonly="true" 后我仍然可以输入文本。我不想使用disabled="true",因为它不会让我删除任何选择。这是如何引起的,我该如何解决?
【问题讨论】:
-
能显示相关代码吗?
标签: jsf-2 autocomplete primefaces
<p:autoComplete> 的 readonly 属性不起作用。设置readonly="true" 后我仍然可以输入文本。我不想使用disabled="true",因为它不会让我删除任何选择。这是如何引起的,我该如何解决?
【问题讨论】:
标签: jsf-2 autocomplete primefaces
似乎是一个已知问题(至少在 3.4.2 中)
Issue 5070: auto complete readonly but send ajax to server
可能的解决方法:
改为渲染 outputText 或只读 inputText 组件。
PrimeFaces Community Forum : autocomplete readonly: still send ajax
【讨论】:
我遇到了同样的问题。但是,我找到了解决方法。您可以将自动完成的各个内容设置为只读。
<script type="text/javascript">
//<![CDATA[
$(document).ready(function() {
document.getElementById('contentForm:myId_input').setAttribute("readOnly","true");
});
// ]]>
</script>
这里 myId 是自动完成的 id。输入框有一个 id myId_input,它只是在末尾附加了 '_input'。
就现有值而言,您可以使用 select 和 unselect 事件来限制更改。
【讨论】:
这是我的解决方法。 它看起来像自动完成组件
<h:panelGroup layout="block" styleClass="ui-autocomplete ui-autocomplete-multiple">
<h:panelGroup layout="block" styleClass="ui-autocomplete-multiple-container ui-widget ui-inputfield ui-corner-all">
<ui:repeat value="#{bean.values}" var="value">
<h:panelGroup layout="block" styleClass="ui-autocomplete-token ui-state-active ui-corner-all">
<h:outputText styleClass="ui-autocomplete-token-label" value="#{value}"/>
</h:panelGroup>
</ui:repeat>
</h:panelGroup>
</h:panelGroup>
【讨论】: