Подтвердить что ты не робот

Удалить функцию Datepicker динамически

Я хочу удалить функцию datepicker в зависимости от выбранного значения выпадающего списка. Я пробую следующие коды, но он по-прежнему показывает календарь, когда я помещаю курсор в текстовое поле. Пожалуйста, дайте мне предложение.

$("#ddlSearchType").change(function () {
    if ($(this).val() == "Required Date" || $(this).val() == "Submitted Date") {
        $("#txtSearch").datepicker();
    } else {
        $("#txtSearch").datepicker("option", "disabled", true);
    }
});

enter image description here

4b9b3361

Ответ 1

Вы можете попробовать использовать методы enable/disable вместо использования метода опций:

$("#txtSearch").datepicker("enable");
$("#txtSearch").datepicker("disable");

Это отключает все текстовое поле. Возможно, вы можете использовать datepicker.destroy():

$(document).ready(function() {
    $("#ddlSearchType").change(function() {
        if ($(this).val() == "Required Date" || $(this).val() == "Submitted Date") {
            $("#txtSearch").datepicker();
        }
        else {
            $("#txtSearch").datepicker("destroy");
        }
    }).change();
});

Демо здесь.

Ответ 2

Уничтожьте экземпляр datepicker, когда вы его не хотите, и создайте новый экземпляр, когда это необходимо.

Я знаю, что это уродливо, но похоже, что это работает...

Проверьте это

 $("#ddlSearchType").change(function () {
        if ($(this).val() == "Required Date" || $(this).val() == "Submitted Date") {
                $("#txtSearch").datepicker();

         }
          else {
                $("#txtSearch").datepicker("destroy");                    
         }
 });

Ответ 3

Просто привяжите datepicker к классу, а не привяжите его к id. Удалите класс, если вы хотите отменить datepicker...

$("#ddlSearchType").change(function () { 
  if ($(this).val() == "Required Date" || $(this).val() == "Submitted Date")                   { 
    $("#txtSearch").addClass("mydate");
    $(".mydate").datepicker()
  } else { 
    $("#txtSearch").removeClass("mydate");
  } 
}); 

Ответ 4

Это решение, которое я использую. Он имеет больше строк, но он будет создавать только дату.

$('#txtSearch').datepicker({
    constrainInput:false,
    beforeShow: function(){
        var t = $('#ddlSearchType').val();
        if( ['Required Date', 'Submitted Date'].indexOf(t) ) {
            $('#txtSearch').prop('readonly', false);
            return false;
        }
        else $('#txtSearch').prop('readonly', true);
    }
});

Датчик даты не будет отображаться, если значение ddlSearchType не является "Обязательной датой" или "Отправленной датой"

Ответ 5

Ну, у меня была такая же проблема и я попытался "уничтожить", но это не сработало для меня. Затем я нашел следующую работу Мой HTML был:

<input placeholder="Select Date" id="MyControlId" class="form-control datepicker" type="text" />

JQuery Это работает для меня:

$('#MyControlId').data('datepicker').remove();