0

我在 php foreach 循环中动态创建输入。我正在为我想添加日期选择器的文本框分配一个类日期选择。在循环之后,日期选择器只出现在第一个实例上,其余的没有。除此之外,它会导致我的其他 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;
};

这让我抓狂...

4

1 回答 1

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();
}

这成功了 :) 感谢您的评论 :)

于 2013-10-22T14:48:00.727 回答