2013-10-22 36 views
0

我在php foreach循環內動態創建輸入。我正在爲我想添加日期選擇器的文本框分配一個類日期選擇。在循環之後,日期選擇器只出現在第一個實例上,其餘的都沒有。除此之外,它使我的其他的jQuery失敗,顯示在控制檯上的錯誤:Uncaught TypeError: Cannot read property '1' of null date.js:477日期選取器不顯示在循環內創建的PHP輸入

這裏是循環我的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')); 
} 
?> 

這裏就是我所說的日期選擇器功能:

$(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

是的,我認爲它是有效的。讓我感到困惑的是,爲什麼它只出現在第一位,儘管他們有相同的班級。 –

+0

那麼,這意味着結果[]爲空,所以這就是從哪裏開始尋找和工作的方式。如果你遇到這樣的錯誤,那麼js將不會繼續爲以下元素工作是有道理的。另外,是$ checkamt;在你調用它之前定義的某處? – spacebean

回答

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

,這做的技巧:)感謝您的意見:)

相關問題