2017-07-20 83 views
0

我有一個腳本,將一行添加到表中。每行有兩個日期選擇器文本框start_dateend_date如何激活表中的bootstrap datepicker?

var rows = ""; 
$("#btn_add").on('click', function(i){ 
    var ct_row = $("#t_activity tr").not('.header').length+1; 

    rows  = "<td class='text-center'><div class='date_set date_2'>"; 
     rows += "<input type='text' class='form-control date dt_set' placeholder='start' onCopy='return false'"; 
     rows += " onDrag='return false' onDrop='return false' onPaste='return false' onkeypress='return false' />"; 
    rows += "</div></td>"; 

    rows += "<td><div class='date_end date_2'>"; 
     rows += "<input type='text' class='form-control date dt_end' placeholder='Finish' onCopy='return false'"; 
     rows += " onDrag='return false' onDrop='return false' onPaste='return false' onkeypress='return false' />"; 
    rows += "</div></td>"; 

    $("#t_activity").append("<tr class='tr_content'>"+rows+"</tr>"); 
}); 

如果我把datepicker腳本button click event after the append裏面,它的工作,但我需要處理button eventdatepicker。這是datepicker腳本:

//START 
    $('.date_set .date').datepicker({ 
     startView   : 0, 
     forceParse   : true, 
     autoclose   : true, 
     format    : "dd/mm/yyyy", 
     todayHighlight  : true, 
    }).on('changeDate', function(selected){ 
     var minDate = new Date(selected.date.valueOf()); 
     $('.date_end .date').datepicker('setStartDate', minDate); 
    }); 

    $('.date_end .date').datepicker({ 
     startView   : 0, 
     todayBtn   : "linked", 
     forceParse   : true, 
     autoclose   : true,  
     format    : "dd/mm/yyyy", 
     todayHighlight  : true, 
    }).on('changeDate', function (selected) { 
     $('.date_set .date').datepicker('setEndDate', selected.date); 
    }); 
//END 

我試圖改變這樣的劇本,但它未能表現出datepicker

$("#t_activity tbody").on('click','.date_set .date',function(){ 
    $(this).closest('tr').find('div .dt_set').datepicker({ 
     startView   : 0, 
     forceParse   : true, 
     autoclose   : true, 
     format    : "dd/mm/yyyy", 
     todayHighlight  : true, 
     }).on('changeDate', function(selected){ 
      var minDate = new Date(selected.date.valueOf()); 
      $('.date_end .date').datepicker('setStartDate', minDate); 
    }); 
}); 

回答

1

首先,你需要聲明爲datepicker是什麼輸入本身。因此,在第一種情況下,它將是dt_set類,而不是date_set

其次,使用委託方法時,你可以使用focus事件,而不是click事件

$('#t_activity').on('focus',".dt_set", function(){ 
}); 

演示:https://jsfiddle.net/zw4a8pfv/

或者,如果您使用的是tbodytable你也可以申報它作爲波紋管

$('#t_activity tbody').on('focus',".dt_set", function(){ 
}); 

演示:https://jsfiddle.net/zw4a8pfv/1/

+0

woah thx。在我的問題中,'focus'優於'click'。還有,你知道如何設置「第二行開始文本框開始日期=第一完成文本框值,」第三行開始文本框開始日期=第二完成文本框值等等? – Vahn

+0

@歡迎您的光臨。這將是一個不同的問題,你應該爲此提出另一個問題。 – Mark