选中复选框以启用/禁用其他项目

时间:2015-04-21 15:28:10

标签: sql oracle checkbox oracle-apex

我有这个报告,每列都是由APEX_ITEM包生成的。

APEX_ITEM.CHECKBOX2, APEX_ITEM.DATE_POPUP2

enter image description here

选中该复选框后,我想启用该行的DATE_POPUP2。并且在未选中复选框时禁用它。

有没有办法做到这一点?

报告查询:

SELECT APEX_ITEM.CHECKBOX2(1,a.USR_CODIGO,DECODE(NVL((SELECT 1 
                                             FROM   PROYECTOS_ROLES_USUARIOS pru
                                             WHERE  pru.USR_CODIGO = a.USR_CODIGO  
                                             AND    pru.PRY_ID = :P92_PRY_ID),0),0,'UNCHECKED',1,'CHECKED')) as Incluir,
 a.USR_CODIGO as Usuario, APEX_ITEM.SELECT_LIST_FROM_QUERY(2, NVL((SELECT pru.ROL_CODIGO 
                                             FROM   PROYECTOS_ROLES_USUARIOS pru
                                             WHERE  pru.USR_CODIGO = a.USR_CODIGO  
                                             AND    pru.PRY_ID = :P92_PRY_ID),null), 'SELECT r.ROL_DESCRIPCION, r.ROL_CODIGO 
 FROM ROLES r WHERE EXISTS (SELECT 1 FROM ROLES_USUARIOS ru
       WHERE ru.ROL_CODIGO = r.ROL_CODIGO
       AND ru.USR_CODIGO = ''' || a.USR_CODIGO || ''') and r.ROL_CODIGO not in(''MNI_RRHH'',''CAJ_COMPRAS'',''CAJ_VENTAS'',''CTA_CTE_CLIENTES''
       ,''CTA_CTE_PROVEEDORES'',''TCM_ALQUILERES'',''TCM_COMPRAS'') order by 1', null, 'YES', '%NULL%', '--') as Rol, 
       NVL((SELECT APEX_ITEM.DATE_POPUP2(3, prus.PRU_FECHA_INICIO, 'dd/mm/yyyy')
                from PROYECTOS_ROLES_USUARIOS prus where prus.PRY_ID = :P92_PRY_ID and prus.USR_CODIGO = a.USR_CODIGO),
                    APEX_ITEM.DATE_POPUP2(3, TO_CHAR(SYSDATE, 'dd/mm/yyyy'), 'dd/mm/yyyy')) as Fecha_Inicio FROM USUARIOS a  WHERE a.USR_FECHA_BAJA IS NULL AND exists (SELECT 1
                FROM  WWV_FLOW_FND_USER
                WHERE USER_NAME = a.USR_CODIGO) order by 1;

1 个答案:

答案 0 :(得分:0)

正如汤姆在评论中所说,使用JavaScript有很多方法可以做到这一点。您可以将CSS类应用于复选框和日期项,然后使用一些jQuery来执行操作。

在“页面加载时执行”部分的页面首选项中定义此事件绑定可以执行此操作。

  $('input.myCheckBox').click(function() {
     var enabled = $(this).prop('checked');
     var myDate  = $(this).closest('tr').find('input.myDate');
     myDate.prop('disabled', !enabled);      
     if(enabled) {
        myDate.next('img').show();
     } else {
        myDate.next('img').hide();
     }         
  });

使用此方法,您无需将ID应用于元素。你也可以沿着动态行动路线走下去,也许会触发一个由动态动作解释的自定义事件?