Oracle apex 如何禁用页面项而不将其从会话状态中删除

Oracle apex 如何禁用页面项而不将其从会话状态中删除,oracle-apex,oracle-apex-19.1,Oracle Apex,Oracle Apex 19.1,我的网页上有3个广播组。当用户在第一个无线组中选择一个值时,如果它是一个特定值,则其他两个无线组中的选择将重置为默认值,并将其禁用以防止更改 问题在于内置的apexDisableaction使用了Disablejavascript属性,因此从会话中删除了无线组的值。它需要使用相当于只读的javascript,据我所知,它目前在apex中并不存在 我如何绕过这个问题,根据另一个单选组中的选择启用/禁用单选组,同时仍然能够从我的代码中访问所选值?部分问题在于只读不适用于单选按钮,根据规范。这里有一个

我的网页上有3个广播组。当用户在第一个无线组中选择一个值时,如果它是一个特定值,则其他两个无线组中的选择将重置为默认值,并将其禁用以防止更改

问题在于内置的apex
Disable
action使用了
Disable
javascript属性,因此从会话中删除了无线组的值。它需要使用相当于
只读的javascript,据我所知,它目前在apex中并不存在


我如何绕过这个问题,根据另一个单选组中的选择启用/禁用单选组,同时仍然能够从我的代码中访问所选值?

部分问题在于只读不适用于单选按钮,根据规范。这里有一个解决方案,应该适合你,但一定要在多个浏览器测试

  • 将此函数添加到页面的函数和全局变量声明属性:

    function preventRadioSelection(e) {
      e.preventDefault();
      $(this).blur();
    }
    
    .sudo-disabled+label {
      opacity: .5;
      cursor: default;
      pointer-events: none;
    }
    
  • 将此CSS添加到页面的内联属性:

    function preventRadioSelection(e) {
      e.preventDefault();
      $(this).blur();
    }
    
    .sudo-disabled+label {
      opacity: .5;
      cursor: default;
      pointer-events: none;
    }
    
  • 当需要禁用某个项目时,请使用以下代码执行JavaScript操作:

    $(this.affectedElements).find('input').on('click', preventRadioSelection).addClass('sudo-disabled');
    
    然后将受影响的元素设置为要禁用的项目

  • 需要启用项目时,请使用以下代码执行JavaScript操作:

    $(this.affectedElements).find('input').off('click', preventRadioSelection).removeClass('sudo-disabled');
    
    然后将受影响的元素设置为要启用的项

  • 请记住,所有这些都是客户端的,可以由知道自己在做什么的人来处理。您需要通过服务器端验证来强制执行业务规则