Oracle apex 如何禁用页面项而不将其从会话状态中删除
我的网页上有3个广播组。当用户在第一个无线组中选择一个值时,如果它是一个特定值,则其他两个无线组中的选择将重置为默认值,并将其禁用以防止更改 问题在于内置的apexOracle apex 如何禁用页面项而不将其从会话状态中删除,oracle-apex,oracle-apex-19.1,Oracle Apex,Oracle Apex 19.1,我的网页上有3个广播组。当用户在第一个无线组中选择一个值时,如果它是一个特定值,则其他两个无线组中的选择将重置为默认值,并将其禁用以防止更改 问题在于内置的apexDisableaction使用了Disablejavascript属性,因此从会话中删除了无线组的值。它需要使用相当于只读的javascript,据我所知,它目前在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');
然后将受影响的元素设置为要启用的项
请记住,所有这些都是客户端的,可以由知道自己在做什么的人来处理。您需要通过服务器端验证来强制执行业务规则