web-dev-qa-db-fra.com

JqueryUI Datepicker: Uncaught TypeError: Impossible de lire la propriété 'settings' de undefined?

Je développe un projet asp.net MVC4 où j'utilise beaucoup de datequick JqueryUI.

Pour un de mes sélecteurs de dates quand j'ai essayé de cliquer sur l'image Datepicker, j'obtiens une erreur du type,

Uncaught TypeError: Cannot read property 'settings' of undefined                jquery-ui-1.10.3.min.js:9

Html 

<div>
<input type="text" id="tsDte"  style="font-size: 14px;width: 50%" >              
                <img src="~/Images/dayPicker.png" onclick="tsDatePickerClick()" style="vertical-align:bottom"/>
</div>

Javascript

var currentDate = new Date();

$("#tsDte").datepicker({
    dateFormat: 'yy-mm-dd',
    maxDate: 0,
    changeYear: true 
}).attr('readonly', 'readonly');
$("#tsDte").datepicker("setDate", currentDate);


function tsDatePickerClick() {
    $("#tsDte").datepicker('show');
}

Ici, j'ai un champ de texte et une image datepicker.Quand je clique sur datepicker image datepicker va apparaître.

j'ai suivi la même manière dans d'autres datepicker et ils fonctionnent bien. J'ai seulement un problème avec ce sélecteur de date.

Toute aide est appréciée.

12
Cyber

Je pense que votre datepicker n’a pas été créé correctement. Par conséquent, lorsque vous appelez show, il attend un objet settings.

Vous ne l'avez probablement pas créé dans $(document).ready, vous devriez avoir:

$(document).ready(function(){      //Add this line (and it's closing line)
    var currentDate = new Date();

    $("#tsDte").datepicker({
        dateFormat: 'yy-mm-dd',
        maxDate: 0,
        changeYear: true 
    }).attr('readonly', 'readonly');
    $("#tsDte").datepicker("setDate", currentDate);
});

J'espère que cela t'aides. À votre santé

Cette même erreur s'affichera si vous essayez d'ouvrir un sélecteur de date sur un champ d'entrée auquel la classe "hasDatepicker" a été attribuée. Supprimez simplement cette classe dans le code HTML.

Avant:

<input type="text" value="01/01/2014" class="hasDatepicker">

Après:

<input type="text" value="01/01/2014">
23
ChillerPerser

Vous incluez la bibliothèque jquery-ui-1.10.3.min.js.

Votre problème est causé par la duplication de vos scripts principaux de l'interface utilisateur de jQuery (vérifiez si vous incluez une autre bibliothèque telle que jquery-ui-1.10.3.drag-drop.min.js.

Chargez-les une seule fois et votre problème disparaîtra.

7
Thanos

Avait le même problème parce que j'avais les deux @ Html.TextBoxFor (m => m.StartDate, "{0: jj/MM/aaaa}", nouveau {@class = "DatePicker"}). @ Html.HiddenFor (m => m.StartDate)

sous la même forme à mon avis.

0
Etienne

Dans mon cas, cela était dû au fait que j'avais une étendue avec id date et que l'entrée avait le même id. Donner à l'entrée un identifiant différent a résolu le problème.

0
Javier Enríquez