Пожалуйста, я хочу получить значение месяца и года из этого кода javascript как переменная PHP $ mm =? && $ yy =?

Пожалуйста, я хочу получить значение месяца и года из этого кода javascript как переменная PHP $ mm =? && $ yy =? input name = "startDate" id = "startDate" class = "date-picker"

<script> $(function () { $('.date-picker').datepicker({ dateFormat: "mm/yy", changeMonth: true, changeYear: true, showButtonPanel: true, onClose: function (dateText, inst) { function isDonePressed() { return ($('#ui-datepicker-div').html().indexOf('ui-datepicker-close ui-state-default ui-priority-primary ui-corner-all ui-state-hover') > -1); } if (isDonePressed()) { var month = $("#ui-datepicker-div .ui-datepicker-month :selected").val(); var year = $("#ui-datepicker-div .ui-datepicker-year :selected").val(); $(this).datepicker('setDate', new Date(year, month, 1)).trigger('change'); $('.date-picker').focusout(); //Added to remove focus from datepicker input box on selecting date } }, beforeShow: function (input, inst) { inst.dpDiv.addClass('month_year_datepicker'); if ((datestr = $(this).val()).length > 0) { year = datestr.substring(datestr.length - 4, datestr.length); month = datestr.substring(0, 2); $(this).datepicker('option', 'defaultDate', new Date(year, month - 1, 1)); $(this).datepicker('setDate', new Date(year, month - 1, 1)); $(".ui-datepicker-calendar").hide(); } } }); }); </script> 

Solutions Collecting From Web of "Пожалуйста, я хочу получить значение месяца и года из этого кода javascript как переменная PHP $ mm =? && $ yy =?"

Из комментария:


«Я использую этот html-код»

 <input name="startDate" id="startDate" class="date-picker" /> <?php if(isset($_POST['month'])) { $month= $_POST['mm']; echo $month; $year= $_POST['yy']; echo $year; } ?> <input type="button" name="submit" /> 

Глядя на ваш код, вы фактически не проходите через переменные, называемые mm и yy (или month на то пошло) – это не то, что делает datepicker.dateFormat – он просто форматирует строку, startDate в ваше поле ввода (например, startDate ) явным образом исключая день.

Вы можете передать эту дату серверу и загрузить его в объект DateTime .

Вы можете использовать DateTime::createFromFormat() для этого, но вам нужно добавить 01 для дня создания объекта, иначе сегодняшняя дата будет использоваться и может привести к неожиданным результатам (например, дата, установленная на 30-е место февраль).

 <?php if(!empty($_POST['startDate'])) { $startDate = DateTime::createFromFormat('d/m/y', "01/{$_POST['startDate']}"); // to output the month as 'mm' echo $startDate->format('m') // to output the year as 'yy' echo $startDate->format('y'); } 

Вам никогда не нужно использовать значение дня, хранящееся в объекте DateTime но оно должно быть там.


пример

Если вы хотите поместить строку mm / yy обратно в поле <input ... /> после отправки формы, скажите, что она не прошла проверку, но вы хотите сохранить данные, введенные пользователем во вход:

 <?php $startDateValue = !empty($_POST['startDate']) ? " value=\"" . (DateTime::createFromFormat('d/m/y', "01/{$_POST['startDate']}")->format('m/y')) . "\"" : ""; ?> <input name="startDate" id="startDate"<?= $startDateValue; ?> class="date-picker" /> 

Рекомендации

  • PHP-класс DateTime
  • Форматы даты PHP