晚上好!
我正在Oracle Apex中创建一个页面,这会导致创建一个文档。此页面包含许多字段,例如"文本字段"或者"选择列表"等等有自己的逻辑,我已经遇到了两个问题 - 穿梭场(让它命名为A)和文本字段(让它命名为B),这应该取决于第一个。他们互动的方案是这样的:
我遇到的问题是我无法根据字段A值使字段B表现出来。我已经尝试过使用JavaScript函数触发" onChange"如果班车B的右半部分已经到达,那么应该一直在工作的事件"其他人"值。但是这种方式并没有像我想的那样工作,因为" onChange"在梭子的两半上每次点击都会出现这种情况,我只需要在移动价值的同时让它成为现实,而其他人则是#34; (可以通过两种方式完成:双击或由于点击航天飞机上的箭头图标)。
所以问题是:如何在" master-detail"中同步穿梭和文本字段。逻辑?
P.S。我使用的是Oracle Apex 4.2.6.0003。另外我知道我可以有一个解决方法,只使用选择列表,但我想尝试使用穿梭机解决问题,特别是考虑到最后一个可能有几乎无限的值。
答案 0 :(得分:1)
将静态值作为shuttle的值列表:
STATIC:A;A,B;B,C;C,Others;OTHERS
使用像这样的jvascript代码:
$("#P40_SHUTTLE").change(function(){
console.log(apex.item(this).getValue().indexOf("OTHERS") != -1);
})
选择OTHERS
后它将返回true(它在梭子的值中)。改变是在这里倾听的正确事件!
将其翻译为DA:
改变航天飞机 使用"当"类型的条件" JavaScript表达式"并使用此代码:
apex.item(this.triggeringElement).getValue().indexOf("OTHERS") != -1
然后,您可以使用DA的True和False操作来显示和隐藏文本字段。我不会比前端更进一步。也许显示文本字段所需的标签,因为它只会在显示字段时显示。
在文本字段中添加服务器端验证(在提交时),您将检查穿梭值是否存在OTHERS
值。如果它存在,则应该需要文本字段。
在文本字段上创建验证。 类型的条件" PLSQL函数体"
DECLARE
l_vc_arr2 APEX_APPLICATION_GLOBAL.VC_ARR2;
BEGIN
l_vc_arr2 := APEX_UTIL.STRING_TO_TABLE(:P40_SHUTTLE);
FOR z IN 1..l_vc_arr2.count LOOP
IF l_vc_arr2(z) = 'OTHERS' THEN
RETURN TRUE;
END IF;
END LOOP;
RETURN FALSE;
END;
验证类型:IS NOT NULL
项目:文本字段。
验证只会在所选值中存在其他值时触发,然后才需要文本字段。