1

我有一个selectBooleanCheckbox(CB)和两个inputTexts(IT1,IT2)都绑定到resp。豆田。

When CB is selected I want that the value of IT1 and IT2 are set to default values and disabled, while when the CB is deselected, IT1 and IT2 have to be enabled and emptied.

目前我尝试了这种方式:

<script type="text/javascript">
  //<![CDATA[ 
    function myFunction()
    {
      if(document.getElementById("detailForm:CB").checked)
      {
        document.getElementById("detailForm:IT2").value = "";
        document.getElementById("detailForm:IT1").value = "00:01";
      }
    }
  //]]>
</script>

<h:selectBooleanCheckbox
   id="CB"
   value="#{detailModel.afterObject.defaultDefinition}"
   onclick="myFunction()"
   disabled="#{detailModel.mode == detailModel.viewMode or !loggedUser.isAdmin()}">
     <f:ajax render="IT1 IT2 @this" execute="@this"/>
</h:selectBooleanCheckbox>

<h:inputText
  id="IT1"
  value="#{bean.IT1}"
  disabled="#{detailModel.mode == detailModel.viewMode or bean.CB}" />

<rich:calendar
  id="IT2"
  value="#{(bean.CB== false) ? detailModel.IT2 : ''}"
  datePattern="yyyy-MM-dd"
  enableManualInput="true"
  disabled="#{detailModel.mode == detailModel.viewMode or bean.CB}"/>
</rich:calendar>

如果我创建一个新的对象/bean,那没关系。

问题是当我想编辑现有对象/bean时:f:ajax render="IT1 IT2 @this" execute="@this"重新加载页面并且旧值覆盖由javascript函数设置的值......

IT2 的值不直接绑定到 bean ( value="#{(bean.CB== false) ? detailModel.IT2 : ''}")。这是因为它必须在显示之前进行修改。

我希望你能理解我对问题的描述,并能帮助我解决它。

4

1 回答 1

0

对复选框使用ActionListener并在侦听器方法中重置有界复选框值(最好将此方法放在现有的操作 bean 类中),并使用render属性来获取这些输入字段的当前值。

于 2013-08-06T12:39:17.247 回答