jQuery comment fractionner la date d’aujourd’hui de l’entrée en mois, jour, année lorsque datepicker n’est pas utilisé

J’ai une entrée datepicker qui est remplie avec la date du jour où la page est chargée. Lorsque datepicker est utilisé, la date est divisée en mois, jour et année et est placée dans trois champs cachés qui sont envoyés au serveur avec les données de publication. Le problème survient lorsque l’utilisateur décide que la date du jour est correcte et qu’il n’utilise pas le sélecteur de date. Comment puis-je obtenir les morceaux de date dans ces trois champs cachés?

J’ai essayé de décomposer la date d’aujourd’hui et de l’append à ces champs, mais chaque fois que j’ai essayé de l’append à jQuery ou d’utiliser du JavaScript simple, cela casse tout. Voici le code de travail sur lequel j’aimerais construire:

jQuery

$(function() { //set your date picker $("#CI").datepicker({ dateFormat: 'mm/dd/yy', changeMonth: true, changeYear: true, showOn: "both", buttonImage: "css/images/calendar-green.gif", buttonImageOnly: true, buttonImageText: "Calendar", beforeShow: function(dateText, instance) { $("#CI").datepicker('setDate', new Date()); }, onSelect: function(dateText, instance) { var pieces = dateText.split("/"); $("#CID").val(pieces[0]); $("#CIM").val(pieces[1]); $("#CIY").val(pieces[2]); } }) //get the current date var todaysDate = new Date(); //format the date in the right format (add 1 to month because JavaScript counts from 0) formatDate = (todaysDate.getMonth() + 1) + '/' + todaysDate.getDate() + '/' + todaysDate.getFullYear(); //set the input value $('#CI').val(formatDate); }); 

HTML

     

Divisez votre fonctionnalité onSelect() en une fonction distincte, qui peut être appelée deux fois.

Avoir la même fonction effectuant les deux tâches vous permet de gérer toute modification de vos fonctionnalités ou de la structure HTML.

alors…

 $(function() { function populateHidden(dateText){ var pieces = dateText.split("/"); $("#CID").val(pieces[0]); $("#CIM").val(pieces[1]); $("#CIY").val(pieces[2]); } //set your date picker $("#CI").datepicker({ dateFormat: 'mm/dd/yy', changeMonth: true, changeYear: true, showOn: "both", buttonImage: "css/images/calendar-green.gif", buttonImageOnly: true, buttonImageText: "Calendar", beforeShow: function(dateText, instance) { $("#CI").datepicker('setDate', new Date()); }, onSelect: populateHidden }) //get the current date var todaysDate = new Date(); //format the date in the right format (add 1 to month because JavaScript counts from 0) formatDate = (todaysDate.getMonth() + 1) + '/' + todaysDate.getDate() + '/' + todaysDate.getFullYear(); //set the input value $('#CI').val(formatDate); populateHidden(formatDate); }); 

Utilisez le code suivant:

  //get the current date var todaysDate = new Date(); //format the date in the right format (add 1 to month because JavaScript counts from 0) var month = todaysDate.getMonth() + 1 ; var date = todaysDate.getDate(); var year =todaysDate.getFullYear() ; formatDate = month + '/' + date+ '/' + year; //set the input value $('#CI').val(formatDate); $("#CID").val(date); $("#CIM").val(month); $("#CIY").val(year);