dede自定义表单如何添加日历功能?

99ANYc3cd6
预计阅读时长 15 分钟
位置: 首页 DEDE建站 正文

我们可以通过非常简单的前端技术轻松实现,核心思路是:在自定义表单中添加一个普通的文本框,然后通过引入一个轻量级的JavaScript日历库,来为这个文本框绑定日历选择功能。

dede自定义表单日历
(图片来源网络,侵删)

下面我将为您提供两种最常用、最简单的方法,并给出详细的步骤。


使用 Layui 的日期组件(推荐,美观且易用)

Layui 是一个非常流行的前端UI框架,它的日期组件功能强大,样式美观,与DedeCMS的模板风格也比较搭。

操作步骤:

第一步:在DedeCMS后台添加自定义表单字段

  1. 登录您的DedeCMS后台。
  2. 进入 核心 -> 内容模型 -> 自定义表单
  3. 找到您要修改的自定义表单,点击 管理字段
  4. 点击 增加新字段
    • 字段名称: birthday (英文,用于程序调用)
    • 字段提示: 请选择您的生日 (中文,在前端显示给用户)
    • 字段类型: 单行文本
    • 默认值: 留空
    • 其他选项 保持默认即可。
  5. 保存字段,您的表单中会出现一个普通的文本输入框。

第二步:在表单提交页面的模板文件中引入Layui

dede自定义表单日历
(图片来源网络,侵删)
  1. 找到您的自定义表单提交页面模板文件,这个文件通常位于 /templets/plus/ 目录下,文件名可能是 diy_list.htm 或者您自定义的模板名。

  2. 在该模板文件的 <head> 标签内,引入Layui的CSS和JS文件,您可以使用Layui的CDN链接,这样无需下载文件。

    <head>
        <meta charset="utf-8">
        <title>自定义表单</title>
        <!-- 引入Layui的CSS -->
        <link rel="stylesheet" href="https://www.layuicdn.com/layui-v2.5.6/css/layui.css">
        <!-- ... 其他已有的CSS ... -->
    </head>
    <body>
        <!-- 您的表单内容 -->
        <!-- 在页面底部,</body>标签之前,引入Layui的JS -->
        <script src="https://www.layuicdn.com/layui-v2.5.6/layui.js"></script>
        <!-- ... 其他已有的JS ... -->
    </body>

第三步:初始化日历组件并绑定到文本框

  1. 在同一个模板文件中,在引入的 layui.js 后面,添加一段 <script> 代码来初始化日历。

    dede自定义表单日历
    (图片来源网络,侵删)
    <script>
    layui.use(['laydate'], function(){
      var laydate = layui.laydate;
      // 执行一个laydate实例
      laydate.render({
        elem: '#birthday' // 绑定到id为birthday的元素
        //, type: 'date' // 可以指定类型,如年、月、日、时分秒等,默认是date
      });
    });
    </script>

第四步:修改表单HTML,为文本框添加ID

  1. 回到您的表单HTML部分,找到刚才通过后台添加的 birthday 字段对应的文本框。

  2. <input> 标签中,添加一个 id 属性,id 的值必须与第三步JS代码中的 elem 值完全一致(这里是 birthday)。

    修改前 (可能的样子):

    <dd>
        <input type='text' name='birthday' class='intxt' style='width:250px' />
    </dd>

    修改后 (的样子):

    <dd>
        <input type='text' name='birthday' id='birthday' class='intxt' style='width:250px' />
    </dd>

完成!

当您在浏览器中打开这个表单页面时,点击 idbirthday 的文本框,就会弹出一个漂亮的Layui日历,用户可以选择日期,选中的日期会自动填入文本框。


使用 Flatpickr(更轻量,无依赖)

Flatpickr 是一个现代的、轻量级的日期选择库,不依赖其他任何框架(如jQuery),加载速度快,非常适合对性能有要求的网站。

操作步骤:

第一步:在DedeCMS后台添加自定义表单字段

这一步与方法一完全相同,请参考方法一的第一步,添加一个名为 birthday 的字段。

第二步:在表单提交页面的模板文件中引入Flatpickr

  1. 找到您的自定义表单提交页面模板文件(如 diy_list.htm)。

  2. <head> 标签内,引入Flatpickr的CSS和JS文件(同样使用CDN)。

    <head>
        <meta charset="utf-8">
        <title>自定义表单</title>
        <!-- 引入Flatpickr的CSS -->
        <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/flatpickr/dist/flatpickr.min.css">
        <!-- ... 其他已有的CSS ... -->
    </head>
    <body>
        <!-- 您的表单内容 -->
        <!-- 在页面底部,</body>标签之前,引入Flatpickr的JS -->
        <script src="https://cdn.jsdelivr.net/npm/flatpickr"></script>
        <!-- ... 其他已有的JS ... -->
    </body>

第三步:初始化Flatpickr组件

  1. 在引入的Flatpickr.js后面,添加 <script> 代码来初始化。

    <script>
    document.addEventListener('DOMContentLoaded', function() {
        flatpickr("#birthday", {
            // 配置选项
            dateFormat: "Y-m-d", // 日期格式,年-月-日
            locale: "zh"         // 设置为中文
        });
    });
    </script>

第四步:修改表单HTML,为文本框添加ID

这一步与方法一也完全相同,请参考方法一的第四步,为 <input> 标签添加 id='birthday'


总结与对比

特性 方法一 (Layui) 方法二 (Flatpickr)
优点 UI美观,与国内设计风格接近。
功能强大,支持年、月、时间等多种选择。
文档和社区支持好。
极其轻量,加载速度快。
无任何外部依赖,对性能友好。
现代化设计,可定制性强。
缺点 相对较重,因为它是一个完整的UI框架。 默认UI偏简约,可能需要额外定制样式。
推荐场景 如果您的网站已经或计划使用Layui,或者追求开箱即用的美观效果。 如果您追求极致的性能和轻量化,或者不希望引入大型UI框架。

重要提示:

  • 数据接收:无论使用哪种方法,用户选择的日期最终都会以文本形式(如 2025-10-27)提交到服务器,DedeCMS的自定义表单会将其作为普通文本存储。
  • 后台显示:在DedeCMS后台查看提交的数据时,您会看到这个日期文本。
  • 日期格式:在初始化日历组件时,可以通过 dateFormat (Layui) 或 dateFormat (Flatpickr) 参数来设定用户选择的日期格式,这个格式最好与您数据库中存储的格式保持一致,方便后续处理。

选择其中一种方法,按照步骤操作,就能轻松为您的DedeCMS自定义表单添加日历功能了。

-- 展开阅读全文 --
头像
dede 二级下拉菜单如何实现?
« 上一篇 02-27
dede信息管理员教程
下一篇 » 02-27

相关文章

取消
微信二维码
支付宝二维码

目录[+]