Datepicker de JQuery - pas de date par défaut
Je veux supprimer la date par défaut dans mon Datepicker de JQuery.
J'ai essayer le code suivant:
$(this).datepicker({defaultDate: ''});
Mais il ne semble pas fonctionner. La date d'aujourd'hui est toujours sélectionnée par défaut.
Vous devez vous connecter pour publier un commentaire.
J'ai contourné le problème en utilisant un caché altField:
et le script suivant:
Ensuite, j'ai utilisé le caché #champ de Date dans mes routines de validation.
ui-state-active
etui-state-hover
de l'élément enfant.$('.ui-datepicker-current-day .ui-state-active').removeClass('ui-state-active').removeClass('ui-state-hover');
Peut-être due à des changements de versionAucune des réponses à la rédaction de ce document a vraiment fonctionné pour moi, donc voici ma solution pavées à partir d'un couple de réponses (pour une ligne datepicker).
$('.calendar').find(".ui-datepicker-current-day a ").removeClass("ui-state-highlight ui-state-active");
C'est en fait une question ouverte avec jQuery UI Datepicker. Voici le billet sur la question:
Billet 8159
Au cœur de ce problème est le fait que Datepicker gère incorrectement une defaultDate valeur de null. Les solutions proposées ici, j'aime que de j-polfer le meilleur et upvoted pour cette raison. La raison de cette solution fonctionne, bien, c'est parce qu'il y a un patch intégré dans le setDate méthode pour effacer la sélection si null est passé dans le paramètre de date. Mais je voulais savoir pourquoi le Datepicker ne répond pas correctement à la defaultDate:null dans les options, et j'ai donc jeté un coup d'oeil à la source.
J'ai trouvé que j'avais besoin de faire trois changements à la Datepicker code source pour corriger ce problème. Voici les modifications que j'ai effectuées:
J'ai changé cette méthode à partir de ce...
à cette....
J'ai modifié cette ligne...
à...
et cette ligne...
à...
J'ai donc modifié cette ligne...
à...
Que c'est. Maintenant, le Datepicker defaultDate option répond de manière plus intuitive, pour une valeur de null passés dans ou à cette option étant manquant.
Voici une démo en JSFIDDLE: Datepicker démo avec defaultDate null
Veuillez noter: Ces changements n'ont pas été testés de manière exhaustive, il peut donc y avoir d'autres problèmes découlent du fait que _getDefaultDate méthode peut retourner null. Alors, faites de votre propre test! 😉
Espère que cela aide quelqu'un! 🙂
day = day || 1;
aprèsday = Math.min(inst.selectedDay, this._getDaysInMonth(year, month)) + (period === "D" ? offset : 0),
dans le_adjustInstDate
fonction de sorte qu'en cliquant sur la flèche pour changer de mois, le premier clic. Sinon, le premier clic de ne pas changer le mois.Sur la base des réponses posté ici, j'ai réussi à faire quelque chose qui a travaillé. Pour ma part, j'ai eu un toujours visible calendrier. Si vous en avez besoin pour un calendrier contextuel, vous devriez être en mesure d'utiliser l'existant
onSelect
gestionnaire pour effectuer quelque chose de similaire, la première fois qu'il est ouvert.Heureusement, il est vraiment aussi simple que cela avec la dernière version de jQuery UI (1.10.2 de cette écriture). Il ne semble pas interférer avec le bon fonctionnement du widget. Le seul inconvénient est que l'utilisation de la
getDate
de lecture des résultats dans ce qui aurait été normalement la valeur par défaut de la date sélectionnée.Pour les fins de mon code, c'est acceptable que mes utilisateurs ne peuvent pas continuer (ils n'ont même pas le bouton "continuer") jusqu'à ce qu'ils ont cliqué sur une date valide à partir du sélecteur. Si ce n'est pas le cas pour vous, quelque chose comme Florian Peschka réponse devrait obtenir ce dont vous avez besoin.
onChangeMonthYear
fonction peu de temps après la publication de la ci-dessus, et de l'utiliser:onChangeMonthYear:function(year,month,inst){ if(no_choice_yet)setTimeout(function(){$("#datepicker .ui-state-active").removeClass("ui-state-active");},1);}
(Étrangement, je n'ai pas de commentaire pour expliquer pourquoi j'ai enveloppé danssetTimeout
; mais, même si pas nécessaire, il ne fait pas de mal.)Pour ouvrir le datepicker de dialogue doit être ouvert dans certains mois de l'année. Je veux dire, vous souhaitez afficher cette boîte de dialogue et être vierge?...
Je pense que si vous ne voulez pas passer tout de date par défaut, le meilleur que vous pouvez faire est d'obtenir la date du jour, avec:
Passant à ce sera un échec, car de defaultDate, pas nul mais vide
C'est quelque chose qui va faire que prévu dans le code précédent
mais c'est le comportement est le même que le premier bloc de code dans cette réponse.
J'ai le même problème à l'aide de inline datepicker.
Le plugin ajouter aujourd'hui sur la cellule/td la classe .ui-datepicker-courant jour et .ui-state-active. Ma solution est d'utiliser une classe personnalisée comme .ui-datepicker-sélectionné-jour et met en œuvre beforeShowDay pour gérer vous-même l'affichage de la date sélectionnée. Quelque chose comme ça:
Exemple de css pour le mettre dans le "highlight" de la cellule:
J'ai utilisé
$('.datefield').val('')
pour montrer vide au lieu d'afficher la date du jour par défaut.Je sais que c'est une vieille question, et je l'ai trouvé parce que j'ai eu la même exigence; ne pas afficher une date dans l'entrée (zone de texte), permettre à l'utilisateur de sélectionner une date dans le datepicker.
Le Balisage (MVC)
HTML de Sortie:
Script (dans le document de prêt):
L'effet du code ci-dessus est que la zone de saisie de la valeur de la 'minDate' variable sur l'écran ET en cliquant sur l'entrée, le datepicker descend et le "minDate" est sélectionnée par défaut.
Remarque: nous ne Nous permettent pas de saisie manuelle des données, c'est la raison pour laquelle le 'readonly' attribut.
Résolution:
Tout ce que j'avais à faire, dans mon cas, a été commentaire/supprimer la ligne:
Le Résultat:
L'effet est que sur l'affichage;
Remarque: Pour mon exigence de " +1m pour maxDate les limites de la sélection de la date à seulement 30 jours à compter de la minDate de la valeur.
Espère que cela aide quelqu'un à sortir.
J'ai eu un problème similaire, mais avec un comportement spécifique.
(Comme une note de côté, je pense que le comportement attendu devrait être de commencer par la date du jour dans le calendrier, mais pas la sélectionner.)
Ma mise en œuvre inclus une ligne de calendrier avec un caché d'entrée
altField
. Ce que j'ai fait, c'était de retirer lealtField
option, et d'ajouter uneonSelect
fonction de mise à jour. De cette façon, la date d'aujourd'hui semble toujours sélectionné, mais le champ caché qui représente la valeur réelle reste vide.Ma solution implique la substitution de jQuery ajouter afin que nous puissions supprimer les éléments à chaque fois que le HTML est régénéré et annexé à la div. Cette version corrige un clignotement de la date par défaut lors de la commutation mois et il efface également le hover.
Fonctionne pour moi:
Qu'entendez-vous par vouloir "supprimer" la date par défaut?
Comment pensez-vous que le datepicker va s'ouvrir quand il n'a pas de mois pour commencer?! Vous ont d'avoir une date par défaut.
Modifier sur votre commentaire
Définir une valeur par défaut de la date que vous souhaitez et de vérifier si l'utilisateur a changé. Si oui, il a choisi une date personnalisée.
Une autre approche serait de créer une variable qui est définie à
true
dès que l'utilisateur clique sur le datepicker de terrain.Si l'utilisateur soumet le formulaire, vous vérifiez pour cette variable. Si c'est
true
, l'utilisateur a le choix d'une date. Si pas, il n'a pas touché le datepicker de terrain.