Выбор даты не отображается на входе PHP, созданном внутри цикла for

0

Я динамически создаю ресурсы внутри цикла php foreach. Я назначаю класс date-pick для текстовых полей, где, как я полагаю, нужно добавить datepicker. После цикла, выбор даты появляется только в первом экземпляре, а остальные нет. Помимо этого, это приводит к сбою моего другого jquery, показывая ошибку на консоли: Uncaught TypeError: Cannot read property '1' of null date.js:477

Вот мой PHP-код для цикла:

<?php
for ($i=0; $i<$poterms; $i++)
{
   $lastcb=$lastcb+ 1;
   $nextdate=date('d-m-Y', strtotime($nextdate. ' + 30 days'));
 ?>
   <tr class="row1">
   <td><input  class="date-pick" value="<?php echo $nextdate; ?>" /></td>
   <td><input type="text" class="chkno" name="CheckNo" id="CheckNo<?php echo $i;?>" value="<?php echo $lastcb;?>"/></td>
   <td><input type="text" class="chkval" name="Amount" value="<?php echo $checkamt;?>" onKeyup ="updatechecktotal()" /></td>
   </tr>
 <?php
   $nextdate=date('d-m-Y', strtotime($nextdate. ' + 30 days'));
}
?>

Здесь я вызываю функцию datepicker:

$(function()
{
$('.date-pick').datePicker().val(new Date().asString()).trigger('change');
});

Вот часть, где ошибка указана на date.js

Date.fromString = function(s)
{
var f = Date.format;
var d = new Date('01/01/1970');
if (s == '') return d;
    s = s.toLowerCase();
var matcher = '';
var order = [];
var r = /(dd?d?|mm?m?|yy?yy?)+([^(m|d|y)])?/g;
var results;
while ((results = r.exec(f)) != null)
{
    switch (results[1]) {
    case 'd':
    case 'dd':
    case 'm':
    case 'mm':
    case 'yy':
    case 'yyyy':
    matcher += '(\\d+\\d?\\d?\\d?)+';
    order.push(results[1].substr(0, 1));
    break;
    case 'mmm':
    matcher += '([a-z]{3})';
    order.push('M');
    break;
  }
if (results[2]) {
matcher += results[2];
}

}
var dm = new RegExp(matcher);
var result = s.match(dm);
for (var i=0; i<order.length; i++) {
    var res = result[i+1]; //line 477
    switch(order[i]) {
    case 'd':
    d.setDate(res);
    break;
    case 'm':
    d.setMonth(Number(res)-1);
    break;
    case 'M':
    for (var j=0; j<Date.abbrMonthNames.length; j++) {
        if (Date.abbrMonthNames[j].toLowerCase() == res) break;
    }
    d.setMonth(j);
    break;
    case 'y':
    d.setYear(res);
    break;
    }
    }

    return d;
};

Это сводит меня с ума...

  • 0
    Вы проверили сгенерированный HTML, чтобы убедиться, что он действителен? Трудно понять только из источника PHP ...
  • 0
    да, я думаю, что это действительно. что меня озадачивает, так это то, что он появляется только на первом, хотя у них один класс.
Показать ещё 2 комментария
Теги:
datepicker

1 ответ

0

Я назначил класс тому, где должен быть размещен сборщик дат, и creted functons, чтобы добавить содержимое td:

$(function()
{
$('.date-pick').datePicker().val(new Date().asString()).trigger('change');
});

function createNewDatepickerInput() 
{
    var $newdatepick = $('<input name="date1" class="date-pick"/>');
    $datepick.appendTo(".dateclass").datepicker();
}

и это сделало трюк :) Спасибо за комментарии :)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню