Как получить JQuery массив в HTML ввод - PullRequest
0 голосов
/ 09 октября 2018

Я пытаюсь получить массив jquery для ввода html и не могу понять, в чем я не прав.

HTML:

<input type="hidden" id="datepicker" name="dates[]" />

JQuery:

<script>
$('#datepicker').datepick({
    dateFormat: 'yyyy-mm-dd',
    multiSelect: '100'
});
$(document).ready(function() {
    $("#butto").click(function() {
        var dates = $('#datepicker').datepick('getDate');
        console.log(dates);

        $('#datepicker').val(dates);
    });
});
</script>

PHP:

$dates= $this->input->post('dates');

foreach($dates as $datee) {
    print_r($datee);
}

Ответы [ 3 ]

0 голосов
/ 09 октября 2018

Получил ответ. HTML:

*<input type="hidden" id="datepicker1" name="dates[]" />*

Jquery:

<script>
$('#datepicker').datepick({
    dateFormat: 'yyyy-mm-dd',
    multiSelect: '100'
});
$(document).ready(function() {
    $("#butto").click(function() {
        var dates = $('#datepicker').datepick('getDate');
        console.log(dates);

        *$('#datepicker1').val(dates);*
    });
});
</script>
0 голосов
/ 09 октября 2018

Вы не можете напрямую получить массив дат, потому что даты с несколькими вариантами выбора передаются через запятую (,) по умолчанию.Так что вам нужно сделать небольшой взлом перед отправкой данных формы.Ниже приведен код, определяемый пользователем.

Код jQuery

<script>
    $('#datepicker').datepick({

      dateFormat: 'yyyy-mm-dd',
      multiSelect: '100',

      //convert the selected date into array and assign the value to your hidden filed when the date picker will close by any format

      onClose: function(dates) { 
         var selectedDate = []; 
         for (var i = 0; i < dates.length; i++) { 
             selectedDate.push($.datepick.formatDate(dates[i])); 
         } 
         $('#datepicker').val(JSON.stringify(selectedDate));
      },

   });
</script>

Код PHP

Вна стороне сервера перехватите скрытое значение поля и расшифруйте его, используя функцию json_decode, чтобы получить массив дат.

$dates= json_decode($this->input->post('dates'));

foreach($dates as $datee) {
   print_r($datee);
}

Надеюсь, он будет работать так, как вы ожидаете.

0 голосов
/ 09 октября 2018

попробуйте,

 // if $dates = ['2018-10-9','2018-10-10']
$dates= $this->input->post('dates');
if(count($dates)!=0){
  $isDate = "";
  for($i=0; $i<=count($dates); $i++) {
    $isDate .= $dates[$i].',';
  }
  $isDate = rtrim($isDate,',');
  print_r($isDate);
  // will return $isDate = "'2018-10-9','2018-10-10'";
} else {
  print_r("no dates");
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...