【问题标题】:Comparing dates using Dynamic Action on DatePicker Oracle Apex在 DatePicker Oracle Apex 上使用动态操作比较日期
【发布时间】:2015-05-28 18:27:06
【问题描述】:

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

Datepicker 术语是简单的布局。

动态动作-->

姓名:有效日期

事件:变化

选择类型:项目

项目:日期选择器名称

条件:等于

值:sysdate+1

当我运行程序并单击日历上的任何一天时,不会出现警报。我认为问题出在格式上。动态操作将日期视为“DD/MM/YYYY”,而 Datepickers 输出为“DD-Mon-YY”,因此无法比较它们。苹果和橙子。但是我尝试了格式以使其完全一样,但仍然没有进展。

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

【问题讨论】:

  • 您正在尝试在需要 JavaScript 表达式(条件值)的字段中使用 pl/sql 表达式。你需要玩 JavaScript 日期算法。
  • 我在 Apex 中使用名为 Moment.js 的 JS 库进行 JavaScript 日期操作/比较。只是觉得值得一提。 momentjs.com

标签: oracle dynamic datepicker action oracle-apex


【解决方案1】:

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

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

将此函数添加到页面的 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;
}

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

isTomorrow(this.triggeringElement)

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

【讨论】:

  • 这很完美,你的解释/代码非常容易理解,特别是对于刚开始使用 oracle apex 的我来说。我什至不知道你可以在 apex 上做到这一点,但这对我当前的项目以及我未来的项目都有帮助。非常感谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-10-09
  • 1970-01-01
  • 2015-12-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多