Supprimez la fonction DatePicker dynamiquement

Je souhaite supprimer la fonction datepicker en fonction de la valeur sélectionnée de la liste déroulante. J'essaie les codes suivants, mais il affiche toujours le calendrier lorsque je place le curseur dans la zone de texte. Donnez-moi une suggestion.

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

Entrez la description de l'image ici

Vous pouvez essayer les méthodes d'activation / désactivation au lieu d'utiliser la méthode d'option:

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

Cela désactive toute la zone de texte. Vous pouvez donc utiliser datepicker.destroy() place:

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

Démo ici .

Détruisez l'instance du datepicker lorsque vous ne le souhaitez pas et créez une nouvelle instance chaque fois que cela est nécessaire.

Je sais que c'est moche mais que cela semble fonctionner …

Regarde ça

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

Il suffit de lier le datepicker à une classe plutôt que de la lier à l'identifiant. Supprimez la classe lorsque vous souhaitez révoquer le datepicker …

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