Oracle apex APEX ORACLE-使用PL/SQL+Javascript动态禁用区域

Oracle apex APEX ORACLE-使用PL/SQL+Javascript动态禁用区域,oracle-apex,Oracle Apex,我的主页上有不同的区域。我想要完成的是根据登录的用户动态禁用一个或多个区域 我已经设法以“静态方式”禁用了一个区域。在页面属性中的JavaScript菜单下,在页面加载时执行中,我输入以下代码: $('#R4').addClass('apex_disabled').attr('tabindex', '-1'); 其中R4是其中一个区域的ID 对于“动态方式”,我创建了一个流程。例如,如果用户是ADMIN,我想禁用区域R4。这是目前的代码,我没有检查用户,我只是尝试使用禁用功能: DEC

我的主页上有不同的区域。我想要完成的是根据登录的用户动态禁用一个或多个区域

我已经设法以“静态方式”禁用了一个区域。在页面属性中的JavaScript菜单下,在页面加载时执行中,我输入以下代码:

$('#R4').addClass('apex_disabled').attr('tabindex', '-1');
其中R4是其中一个区域的ID

对于“动态方式”,我创建了一个流程。例如,如果用户是ADMIN,我想禁用区域R4。这是目前的代码,我没有检查用户,我只是尝试使用禁用功能:

    DECLARE
    user VARCHAR2 (50);

    BEGIN

    select username into user
    from USER
    where username = V('APP_USER');


    htp.p (' <script type = "text/javascript"> ');
    htp.p (' function disableRegion()');
    htp.p (' { ');
    htp.p (' 
    $(''#R4'').addClass(''apex_disabled'').attr(''tabindex'',''-1''); ');
    htp.p (' } ');
    htp.p (' </script> ');


    END;
这是行不通的。有什么建议吗?谢谢

问题解决了

脚本需要在加载后启动

矿井被设置为装载-在收割台之前


因此,它无法获取这些区域的ID

服务器端条件是正常的,您可以使用任何形式的声明性表达式、PL/SQL或SQL查询等。 一旦页面被呈现,它们可能不会被切换回打开状态,因为它们在第一时间不会被呈现

客户端条件可能来自页面加载时触发的动态操作,这也可以通过授权方案进行保护,因此只有某些动态操作可以触发。但正如有人所说,这并不安全


提供的代码永远不会存在于编写良好的APEX应用程序中,尽管我怀疑OP可能在APEX 3.x上,或者在那里学习过。

您也可以只更改特定区域的授权方案,例如,对于R4,如果您有管理员授权方案,请选择“不管理员”。@RLOG agree,这将是imho更有力的方法。目前的方法很容易避免。也许这在OP的环境中不是问题。我在Apex 4.2上,我在这里学习。因此,最好的解决方案是更改区域上的授权方案?是的,如果您不想向某些用户显示某些区域/按钮,则授权方案是可行的。我建议你按功能应用方案,而不是按业务角色,IMHO,但这是更深入的讨论谢谢!还有一个问题:正如我在回答中提到的,我只想禁用一个特定的区域,而不是隐藏它。对于身份验证方案,这仍然是可能的吗?所谓禁用,是指添加一个特定的类?您可以使用auth scheme将其作为动态操作条件运行,也可以有条件地计算一个项并将其替换到区域类中。