使用DatePicker Oracle Apex上的动态操作比较日期

时间:2015-05-28 18:27:06

标签: oracle dynamic datepicker action oracle-apex

我有一个日期选择器,用户只需选择一个日期,然后动态操作就会发出警告,如果用户明天点击(sysdate + 1)。

Datepicker术语是简单的布局。

动态行动 - >

  

名称:有效日期

     

事件:更改

     

选择类型:项目

     

项目:datepicker_name

     

条件:等于

     

值:sysdate + 1

当我运行程序并点击日历上的任何一天时,不会出现警报。我认为问题是格式。动态操作将日期视为" DD / MM / YYYY"而Datepickers的输出是" DD-Mon-YY"所以它无法比较它们。苹果和橘子。但是我玩这种格式使它完全相同但仍没有进展。

再次感谢您的时间和帮助!

1 个答案:

答案 0 :(得分:0)

正如@ScottWe所提到的:您正在尝试在HTML / javascript中应用PLSQL逻辑。 '何时 - 条件'在运行时进行评估,因此您无法在那里使用PLSQL。 日期算术在javascript中有点烦人,所以如果您不熟悉它,这里有一种方法可以执行检查(明天是否输入日期)。

从这些中找出线索:
Date difference in Javascript (ignoring time of day)
JavaScript how to get tomorrows date in format dd-mm-yy

将此功能添加到页面的全局变量和函数的javascript部分:

NSScrollView

然后在您的动态动作'何时'条件,使用带有以下代码的javascript表达式:

function isTomorrow(pDateItem){  
  function getTomorrow(){ 
    var tomorrow = new Date();
    tomorrow.setDate(tomorrow.getDate() + 1);
    return tomorrow;
  };

  function cutTime(pDate){
    return new Date(pDate.getFullYear(), pDate.getMonth(), pDate.getDate());
  };

  // check if pDateItem leads to a selection
  // check if it is a datepicker
  // check if a date has been selected
  if ( $(pDateItem).length 
       && $(pDateItem).data("datepicker")
       && $(pDateItem).datepicker("getDate") !== null 
     ) 
  {        
    var tomorrow = getTomorrow();
    var check = $(pDateItem).datepicker("getDate");
    var one = cutTime(check);
    var two = cutTime(tomorrow);

    return one.getDate() === two.getDate();
  };
  return false;
}

然后相应的True Actions只会在日期设置为明天时触发。