2

我的表单/表格上的持续时间字段有困难。

用户需要指明HH:MM会议花费了多长时间。

  1. 该列在表中应具有什么数据类型。目前是TIMESTAMP

  2. 如何使该字段具有“HH:MM”的输入掩码。我希望用户能够立即输入“0130”并将其格式化为“01:30”。

需要报告这些时间,所以我认为输入数据VARCHAR无济于事。

4

3 回答 3

9

老实说,这并不像人们想象的那么容易,而且可能更多的是从用户界面的角度来看,而不是从技术角度来看。
最简单的出路?顶点日期时间选择器。老实说,如果您是这项技术的新手,我建议您使用它,特别是如果您最初想避开 javascript/jquery。
让我们这样说吧:日期选择器很好并且工作得很好,但是时间真的没有那么棒。

日期时间选择器外观

不是那么热。在您点击“关闭”之前,输入项中的值不会改变。老实说,时间组件似乎是最后一秒的草率添加。但是,它有效。(但我仍然将该字段设置为只读,以便用户无法直接输入文本。)
允许输入文本意味着需要根据正确的格式掩码对其进行验证。jQuery(日期选择器)和 Oracle 中的格式掩码不同,您的 oracle 格式掩码可能无法在日期选择器中使用,从而增加了更多复杂性。也没有“实时”日期验证(也没有日期时间),只有内置项目验证将检查格式掩码并在提交时触发。

无论如何,我会说看看它。将您的项目设置为显示为日期选择器,并使用设置下的格式掩码获取日期时间选择器:
日期时间选择器设置

现在您当然可以进一步推动它,尽管它会花费一些努力。不过有几种选择。
就个人而言,当我实施日期+时间时,我总是将日期与时间分开在 2 个字段中。1 个带有日期组件,1 个带有时间组件,同时隐藏原始值的项目(总共 3 个项目)。然后我在日期项上使用 datepicker,并在时间项上使用 jquery timepicker 插件。在提交时,我将这两个值加在一起并在一个日期中解析它们,然后再次将此值放入原始项目中(以允许标准处理对源设置为数据库列的项目进行处理)。
一个时间选择器的例子在这里,另一个在这里. 它们都不难实现。他们也有很好的文档。我不想在这里深入研究它的实现,我建议你先看看它,看看它有多吓到你。(我设置了一个 apex 演示,但目前时间有点紧迫)。

例如,使用 Trent 的(第二个链接)插件:

  • 将 js 文件放在 apex images 目录中。我在我的案例中创建了一个文件夹“/custom”
  • 将所需的 js 文件添加到页面(假设 apex 4.2,将其放在 javascript 文件 urls 中)

    #IMAGE_PREFIX#libraries/jquery-ui/1.8.22/ui/jquery.ui.slider.js
    #IMAGE_PREFIX#custom/jquery-ui-timepicker-addon.js
    
  • 使用诸如此类的 onload 代码来初始化字段

    $("#P95_DEPARTURE_TIME").timepicker({hourGrid: 4,minuteGrid: 10});
    

它最终会看起来像这样:

时间选择器插件

如果您希望它生效,则选择器之间的任何进一步交互都需要在 javascript 代码中处理。不要忘记服务器验证。

至于项目,我的隐藏日期项目有格式掩码DD-MON-YYYY HH24:MI。格式掩码很重要,因为项目是绑定变量,而绑定变量是varchar2. html 表单中的值也就是文本。例如,这是在我显示的日期项上,时间项的设置类似:

日期显示

然后在提交后的计算中,我再次将这些值粘合在一起并将它们放入将值保存到数据库的 m 中:

:P95_DEPARTURE_DATE_DISP||' '||:P95_DEPARTURE_TIME

虽然这只是设置的简短指南,但一旦您对产品更加熟悉,可能会很有趣。

apex-plugin 上还有 2 个 timepicker 插件,但老实说,与这些已经存在的精细 jquery 插件相比,我一点也不觉得它们有趣。

给它一些想法,看看它。

于 2013-07-17T09:32:56.380 回答
2

如果宿舍足够..

项目:具有自动完成功能的文本字段

SELECT ss|| ':' || dd ss_dd
FROM
 (SELECT to_char(trunc(sysdate)+(level - 1)/ 24,'HH24')ss
  FROM dual CONNECT BY level <= 24),
 (SELECT lpad(mod(15 * level, 60), 2, '0') dd
  FROM dual CONNECT BY level <= 4)

在此处输入图像描述

于 2020-02-05T16:23:37.400 回答
0

APEX 4.2:只是为将来的观看提供一些启示;现在有大量 Apex 插件用于选择日期/时间或两者都返回您需要的日期时间格式的变体。例如,在您的情况下,HH:MM 或 HH24:MI。

我个人使用了来自http://www.apex-plugin.com的 TimePicker 插件,我推荐它没有问题。

于 2016-02-05T09:59:42.517 回答