【问题标题】:datetimepicker not showing up in bootstrap dialogdatetimepicker 未显示在引导对话框中
【发布时间】:2014-04-03 14:58:08
【问题描述】:

我正在使用来自http://eonasdan.github.io/bootstrap-datetimepicker/ 的日期时间选择器 我有一个引导对话框,其中包含一个文本字段和一个 ID。我已经完全复制了它,但是我的 datetimepicker 没有显示出来……有人知道吗?

Javascript/HTML:

BootstrapDialog.show({
                //Set properties
                draggable:true,
                title: cObj.title, 
                message: function (dialogItself) {
                    var form = $('<form id="createEventForm"> </form>');
                    var klantNaam = $('<input id="titleDrop" type="text" />');
                    var description = $('<textarea id="descriptionDrop"></textarea>');
                    var employee = $('<select class="form-control" id="employee">');
                    var starttime = $('<input id="starttime" type="text" class="form-control" /><span class="input-group-addon"><span class="glyphicon glyphicon-time"></span></span>');
                    var startTimeDiv =
                     $('<div/>', {
                        id: 'datetimepicker4',
                        class: 'input-group date',
                        html: starttime
                    });
                    var endtime = $('<input type="text" class="endtime" id="endtime"/>');
                dialogItself.setData('field-klant-naam', klantNaam);
                dialogItself.setData('field-description', description);    // Put it in dialog data's container then you can get it easier by using dialog.getData() later.
                dialogItself.setData('select-user', employee);   // Put it in dialog data's container then you can get it easier by using dialog.getData() later.
                dialogItself.setData('starttime', startTimeDiv);   // Put it in dialog data's container then you can get it easier by using dialog.getData() later.
                dialogItself.setData('endtime', endtime);
                form.append('<label>Klant naam</label>').append(klantNaam);
                form.append('<label>Beschrijving</label>').append(description);
                form.append('<label>Medewerker</label>').append(employee);
                form.append('<label>Start tijd</label>').append(startTimeDiv);
                form.append('<label>Eind tijd</label>').append(endtime);
                  $.each(<?php echo $list?>, function(key, value) {
                   employee.append($("<option/>", {
                        value: value.key,
                        text: value.value
                    }));
                });


                return form;
                 },
 })

    $('#datetimepicker4').datetimepicker();

CSS:

  #datepicker4{
        z-index: 99999;
    }

【问题讨论】:

  • 这是完整的代码吗?您是否将 div 添加到 DOM?是否包含 javascript 和 css 文件?
  • 是的,如果我在输入之前添加一个 div,我会在 starttime var 的输入字段末尾得到一个 。所以我需要它这样做。但如果这会导致问题,因为在对话框之外它可以完美运行
  • 请发布完整代码或创建一个小提琴,以便我们知道问题所在。
  • 完成,我添加了对问题有意义的代码
  • 打开firebug,转到控制台选项卡并刷新页面,然后发布您看到的错误。

标签: javascript jquery css twitter-bootstrap datepicker


【解决方案1】:

您需要在文档中存在的元素上调用datetimepicker(),在您的情况下,您只是定义返回到 BootstrapDialog 对象的message: function() {},这意味着它仍在内存中并且尚未添加到DOM 还没有。

查看 BootstrapDialog 的文档后发现,onShow() 是在将消息添加到 DOM 后调用的

BootstrapDialog.show({
                //Set properties
                draggable:true,
                title: cObj.title, 
                onShow: function() {
                    if (!this.datetime_invoked) {
                       this.datetime_invoked = true;
                       $('#datetimepicker4').datetimepicker();
                    }
                },
                message: function (dialogItself) {
                    var form = $('<form id="createEventForm"> </form>');
                    var klantNaam = $('<input id="titleDrop" type="text" />');
                    var description = $('<textarea id="descriptionDrop"></textarea>');
                    var employee = $('<select class="form-control" id="employee">');
                    var starttime = $('<input id="starttime" type="text" class="form-control" /><span class="input-group-addon"><span class="glyphicon glyphicon-time"></span></span>');
                    var startTimeDiv =
                     $('<div/>', {
                        id: 'datetimepicker4',
                        class: 'input-group date',
                        html: starttime
                    });

                    var endtime = $('<input type="text" class="endtime" id="endtime"/>');
                dialogItself.setData('field-klant-naam', klantNaam);
                dialogItself.setData('field-description', description);    // Put it in dialog data's container then you can get it easier by using dialog.getData() later.
                dialogItself.setData('select-user', employee);   // Put it in dialog data's container then you can get it easier by using dialog.getData() later.
                dialogItself.setData('starttime', startTimeDiv);   // Put it in dialog data's container then you can get it easier by using dialog.getData() later.
                dialogItself.setData('endtime', endtime);
                form.append('<label>Klant naam</label>').append(klantNaam);
                form.append('<label>Beschrijving</label>').append(description);
                form.append('<label>Medewerker</label>').append(employee);
                form.append('<label>Start tijd</label>').append(startTimeDiv);
                form.append('<label>Eind tijd</label>').append(endtime);
                  $.each(<?php echo $list?>, function(key, value) {
                   employee.append($("<option/>", {
                        value: value.key,
                        text: value.value
                    }));
                });


                return form;
    },
 })

【讨论】:

  • 好的,但我仍然看不到我的选择器。我已将其附加到表单和对话框中,但没有结果...
  • 非常感谢!这解决了我的问题,添加了一个 z-index:1151,现在它可以正常工作了!
【解决方案2】:

您的 ID 在您的 CSS 文件中不同。在你的标记中你有#datetimepicker4,但在你的css中#datepicker4

尝试更改 CSS 并查看是否出现。

此外,请检查在 Firebug 中查看源代码时是否出现了日期时间标记。如果是这样,上述可能会将其修复为可能是 z-index 问题。

【讨论】:

  • 是的,我看到了,但是谢谢,我已将其更改为:.bootstrap-datetimepicker-widget{ z-index: 99999999!important; }
  • 解决了吗?
  • 当你在 firebug 中查看 HTML 时,你能在底部看到 datetimepicker 的标记吗? (可能就在
【解决方案3】:

我用这个代码修复了:

onshown: function(dialogRef){

                    $('#submit_date').datepicker({
                        language: 'ja',
                        isRTL: false,
                        //autoclose: true,
                    });
                },

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多