如何使用动态操作基于选择列表更改事件设置文本项

时间:2012-08-29 07:44:44

标签: oracle-apex

我有以下select语句,但不确定如何设置动态操作以在用户选择时分配当前sysdate 来自LOV的选项。我基本上想在LOV选择时自动将“DATE_CALLED”字段填充到sysdate 通过动态行动制作。

尝试使用此线程中针对复选框的相同处理但似乎无法解决 - 请参阅:>

Oracle ApEx Checkbox to Manipulate Other Values When Checked/Unchecked

select  APEX_ITEM.HIDDEN(1,change_id) ||
        APEX_ITEM.HIDDEN(2,contact_id) ||
        APEX_ITEM.SELECT_LIST_FROM_LOV(p_idx => 10,
                                       p_value => reason_id,
                                       p_lov => 'LOV_REASONS',
                                       p_attributes => 'class="lov_select"',
                                       p_show_null => 'YES',
                                       p_null_value => NULL,
                                       p_null_text => '--- Please select a reason ---') reas,
        APEX_ITEM.TEXT(p_idx => 20, 
                       p_value => TO_CHAR(date_contacted,'DD/MM/YYYY HH24:MI'),
                       p_size => 14,
                       p_attributes => 'class="date_val" readonly="readonly" style="background-color:#B0C4DE;border:1px solid #999999;"') "DATE_CALLED",
        APEX_ITEM.TEXTAREA(p_idx => 30,
                       p_value => comments,
                       p_rows => 2, 
                       p_cols => 30 ) "MPA_COMMENT"
from  MY_TABLE

对于Dymanic Action,我有以下内容:

Dynamic action: "lov selection"
Event: Change
Selection Type: jQuery Selector
jQuery Selector: .lov_select (this is the class I added to the select list from lov in the sql)
Condition: JavaScript Expression
Value: ****** Unsure what I need to put here ?? ******

对于True Action,我有以下内容:

True Action:
Sequence: 10
Action: Execute PL/SQl Code
Fire On Page Load: No
Code: :P1_DEF_DATE := TO_CHAR(SYSDATE,'DD/MM/YYYY HH24:MI'); and have Page Item Submitted and Returned

Sequence: 20
Action: Execute JavaScript Code
Fire On Page Load: No
Code: $(this.triggeringElement).closest("tr").find("td[headers='DATE_CALLED'] input").val($v('P1_DEF_DATE'));

****此代码无效,因为$(this.triggeringElement)对于选择列表不正确**

非常感谢如何基于select_list_from_lov场景而不是复选框来实现我的需求。

感谢。

1 个答案:

答案 0 :(得分:1)

我使用复选框上的条件来区分已选中/未选中状态,并且能够定义true和false操作。您不需要在复选框上执行此操作:只要值发生更改,就会触发更改(即:用户选择其他选项)。

但是,如果你想捕获一个无效/ null选项,你可以使用条件,但是使用其中一个运算符代替javascript表达式来测试值(例如:“=”with“1”)

进一步详细说明选择列表中的操作:
这是我用来设置示例的查询:

select 
apex_item.checkbox2(p_idx => 1, p_value => empno, p_attributes => 'class="check_select"') empselection,
apex_item.text(2, :P14_DEF_TEXT) empname,
APEX_ITEM.SELECT_LIST_FROM_LOV(p_idx => 3,
                                       p_value => NULL,
                                       p_lov => 'LOV_REASONS',
                                       p_attributes => 'class="lov_select"',
                                       p_show_null => 'YES',
                                       p_null_value => NULL,
                                       p_null_text => '--- Please select a reason ---') reas,
apex_item.text(4, null) some_text,
empno,
ename,
comm
from emp

我使用了一个带有LOV_REASONS静态值的lov。

Dynamic action on lov select

真实行动中的代码:

$(this.triggeringElement).closest("tr").find("td[headers='SOME_TEXT'] input").val("THIS IS A TEST");

这似乎对我有用。