如何解决datepicker时间选择器在模态框中错位的问题(同时应用了markdown编辑器时)

文章讲述了在模态框中同时使用markdown编辑器和datepicker时遇到的问题,即时间选择器触发markdown重载导致位置错乱。作者通过调整事件绑定和避免预加载解决此问题,提出采用click事件绑定并分别初始化两个组件的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天在遇到这么一个问题:

我在模态框中同时应用了markdown编辑器与datepicker时间选择器,但是每次在点击时间输入框时,markdown编辑器总是会被重新加载,导致模态框跳转回最顶部,因此时间选择框与输入框就处在了分离的位置:

错误方法:

我原本的方法是在button标签属性中实现与模态框的绑定,而在模态框显示时,使用回调函数来执行markdown的初始化函数(因为如果在加载页面时就初始化markdown,则会出现无法输入文字的情况)。代码如下:

        //模态框展示时,执行markdown编辑器的初始化
        $('#myModal').on('show.bs.modal', function (event) {
            initEditor()
        })
        
        // datepicker初始化
        $('#id_start_date').datepicker({
                format: 'yyyy-mm-dd',
                startDate: '0',
                language: 'zh-CN',
                autoclose: true
            });
        
        //markdown初始化函数
        function initEditor() {
            editormd('editor', {
                placeholder: '请输入内容',
                height: 600,
                path: '{% static 'plugins/editor-md/editor.md-master/lib/' %}'
            })
        }

此处尝试过将datepicker初始化过程封装成函数,与initEditor()一起放入回调函数中,但并没有解决问题。

因此推断是,当点击时间选择框即datepicker初始化时,总是会触发markdown编辑器的初始化,从而使模态框跳转回最顶部。

解决思路:

采用给button按钮绑定click事件的方法,直接在click事件中执行markdown和datepicker的初始化。那么在选择时间时,就不会触发markdown的初始化,问题即可解决。同时markdown也不会再页面框架加载时即初始化,也避免了不兼容导致无法输入的问题。

        // 为id为"show_modal"的按钮绑定click事件
        $('#show_modal').click(function () {
            initEditor();
            initDatepicker()
        })


        function initEditor() {
            editormd('editor', {
                placeholder: '请输入内容',
                height: 600,
                path: '{% static 'plugins/editor-md/editor.md-master/lib/' %}'
            })
        }

        把datepicker初始化封装成函数
        function initDatepicker() {
            $('#id_start_date').datepicker({
                format: 'yyyy-mm-dd',
                startDate: '0',
                language: 'zh-CN',
                autoclose: true
            });
        }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值