Bootstrap datepicker禁用功能

时间:2013-09-02 09:02:05

标签: twitter-bootstrap datepicker

我在项目中需要一个功能,我认为bootstrap datepicker仍然没有提供。我想启用/禁用datepicker字段,以便用户无法更改其值。类似于readOnly功能。

关于它的任何想法?

提前谢谢。

9 个答案:

答案 0 :(得分:10)

$("#nicIssuedDate").prop('disabled', true);

这对我有用 Bootstrap Datepicker和Jquery

答案 1 :(得分:3)

您可以执行以下操作:

禁用:

$("#date").datepicker("option", "disabled", true);

并启用:

$("#date").datepicker("option", "disabled", false);

答案 2 :(得分:2)

您可以使用Bootstrap的onRender事件来禁用 datepicker

  

onRender :在datepicker中呈现一天时会触发此事件。应该返回一个字符串。返回'禁用'以禁用   被选中的日子。

答案 3 :(得分:2)

这样做:

$('#idOfYourCalendar').data("DateTimePicker").disable();

官方文件: https://eonasdan.github.io/bootstrap-datetimepicker/Functions/

答案 4 :(得分:1)

尝试将选项enabledDates设置为仅显示您要显示的日期的数组。同时将日期设置为该日期。所有其他日期将被禁用。

enabledDates: ['your_date_to_show'],

例如

  $('#Date').datetimepicker({
    inline: true,
    viewMode: "days",
    format: "YYYY-MM-DD",
    enabledDates: [fetchDate("Date")],
  })
  .data("DateTimePicker")
  .date(fetchDate("Date"));

  $('#Date').ready(function (){
    $("#Date").data("DateTimePicker").date(fetchDate("Date"));
  });

答案 5 :(得分:1)

使用此代码

$("#nicIssuedDate").prop('disabled', true);

答案 6 :(得分:0)

我找到了一个解决方案,但只是通过修改引导程序日历代码。覆盖this._events部分以禁用keyup / down事件对我有用:

_buildEvents: function(){
        if (this.isInput) { // single input
            this._events = [
                [this.element, {
                    focus: $.proxy(this.show, this),
                    keyup: $.proxy(this.update, this),
                    keydown: $.proxy(this.keydown, this)
                }]
            ];
        }
        else if (this.component && this.hasInput){ // component: input + button
            this._events = [
                // For components that are not readonly, allow keyboard nav
                [this.element.find('input'), {
                    //focus: $.proxy(this.show, this),
                    //keyup: $.proxy(this.update, this),
                    //keydown: $.proxy(this.keydown, this)
                }],
                [this.component, {
                    click: $.proxy(this.show, this)
                }]
            ];
        }
        else if (this.element.is('div')) {  // inline datepicker
            this.isInline = true;
        }
        else {
            this._events = [
                [this.element, {
                    click: $.proxy(this.show, this)
                }]
            ];
        }

        this._secondaryEvents = [
            [this.picker, {
                click: $.proxy(this.click, this)
            }],
            [$(window), {
                resize: $.proxy(this.place, this)
            }],
            [$(document), {
                mousedown: $.proxy(function (e) {
                    // Clicked outside the datepicker, hide it
                    if (!(
                        this.element.is(e.target) ||
                        this.element.find(e.target).length ||
                        this.picker.is(e.target) ||
                        this.picker.find(e.target).length
                    )) {
                        this.hide();
                    }
                }, this)
            }]
        ];
    },

答案 7 :(得分:0)

我设法获得了可接受的解决方案如下:

$(".date").datetimepicker({
                defaultDate: moment(),
                format: 'YYYY-MM-DD'
            }).end().on('keypress paste', function (e) {
                e.preventDefault();
                return false;
            });

希望它也适合你!

答案 8 :(得分:-5)

你只需要使用jquery attr方法

$('').attr('disabled', true);

多数民众赞成:)