在for循环内创建的PHP输入上没有显示日期选择器

时间:2013-10-22 08:39:55

标签: javascript php jquery datepicker

我在php foreach循环中动态创建输入。我正在为我想要添加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;
};

这让我发疯了......

1 个答案:

答案 0 :(得分:0)

我将一个班级分配到了应该放置日期选择器的位置,并且为了附加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();
}

这就是诀窍:)感谢您的评论:)