0

我的网页中有以下代码。在action执行该方法后,将呈现一个标签,指示该过程是否成功。

我想要的是在单击按钮后立即隐藏该标签。我怎样才能做到这一点?

我正在考虑使用actionListener,但我不知道它是否像:

  1. 调用 actionListener 的方法
  2. 重新渲染 myView(清除我的标签)
  3. 调用动作的方法
  4. 重新渲染 myView(显示进程是否成功的标签)

或者也许是什么onclick="getElementById().hide"

有任何想法吗?

干杯,

   ...
   ...
   <a4j:commandButton id="btnActualizaCubo"
                       value="Actualizar Cubo"
                       render="messageDependenciaCubo actualizacionCuboLabels @this"
                       onclick="return confirm('Las fechas seleccionadas son correctas?');"
                       onbegin="this.disabled=true;
                       document.getElementById('formActualizacionCubo:imgProcesandoCubo').style.display='block'"
                       oncomplete="this.disabled=false;
                       document.getElementById('formActualizacionCubo:imgProcesandoCubo').style.display='none'"
                       action="#{administrationBean.doActualizaCubo}"/>
   ...
    <a4j:outputPanel id="actualizacionCuboLabels" style="font-size: 14px; color: #D17100">
        <h:outputText rendered="#{administrationBean.actualizacionCuboCorrectaLabelRendered}"
                      value="Actualización correcta !"/>
        <h:outputText rendered="#{administrationBean.actualizacionCuboFalloLabelRendered}"
                      value="Fallo la actualización !"/>
    </a4j:outputPanel>
   ...
4

1 回答 1

1

使用“onclick”方法使用 JavaScript 隐藏文本。一个简单的方法是用 div 包装你的标签,并分别在 onclick/oncomplete 方法中隐藏/显示 div。另外,请记住生成一个 div 来完成这项工作,因此您只需获取 HTML 生成的 id 并隐藏/显示它。我会让你隐藏/显示一个 div 的 JS 函数(很简单,我必须说):

<script type="text/javascript">
    function ocultaDiv(divId) {
        document.getElementById(divId).style.display = 'none';
    }

    function muestraDiv(divId) {
        document.getElementById(divId).style.display = 'block';
    }
</script>
<a4j:commandButton id="btnActualizaCubo"
    value="Actualizar Cubo"
    render="messageDependenciaCubo actualizacionCuboLabels @this"
    onclick="return confirm('Las fechas seleccionadas son correctas?'); ocultaDiv('myForm:actualizacionCuboLabels');"
    onbegin="this.disabled=true; document.getElementById('formActualizacionCubo:imgProcesandoCubo').style.display='block'"

oncomplete="this.disabled=false; document.getElementById('formActualizacionCubo:imgProcesandoCubo').style.display='none';muestraDiv('myForm:actualizacionCuboLabels');" action="#{administrationBean.doActualizaCubo}" />

当您可以使用纯 JavaScript 进行渲染并节省性能时,请记住不要使用服务器调用来渲染您的项目。此外,如果您使用 RF 3.3 或 RF 4 添加有关您正在使用的图像的提示,请添加“正在加载,请稍候”,这可以通过甚至可以冻结整个页面来完成(无需禁用您的按钮和链接!)。

于 2012-06-21T21:45:15.090 回答