【发布时间】:2015-12-02 11:54:57
【问题描述】:
我有 3 个通过 jQuery 中的 clone() 动态创建的字段,并希望从可用小时数中减去小时数。为了帮助我解释,请考虑这张图片:
第一个日期是动态设置的(但可以更改)。在右上角,我们有可用的总小时数。我需要计算以下字段中设置的小时数(所有这些都是动态创建的,可以添加或消除更多时间)并从可用小时数中减去。我还需要考虑每个时间段不与上一个时间段重叠。例如,设置下一个日期时,不能和上面的一样作为时间间隔匹配。
这是我的 HTML 代码:
<table id="days" class="table table-hover">
<thead>
<tr><th>Dia</th><th>Hora Início</th><th>Hora Término</th><th></th></tr>
</thead>
<tbody>
<tr id="days0" class="hidden" data-id="0" ><td data-name="day"><input type="text" name="day0" class="input-block-level datepicker-days"> </td><td data-name="start"><input type="time" name="start0"></td><td data-name="end"><input type="time" name="end0"></td><td data-name="del"><button type="button" name="del0" class="btn btn-xs btn-danger row-remove"><icon class="fa fa-remove"></icon></button></td></tr>
</tbody>
</table>
<button type="button" class="btn btn-xs" id="add_row"><i class="icon fa fa-plus"></i></button>
到目前为止,我的 JQuery:
$("#add_row").on("click", function() {
var newid = 0;
$.each($("#days tr"), function() {
if (parseInt($(this).data("id")) > newid) {
newid = parseInt($(this).data("id"));
}
});
newid++;
var tr = $("<tr></tr>", {
id: "days"+newid,
"data-id": newid
});
$.each($("#days tbody tr:nth(0) td"), function() {
var cur_td = $(this);
var children = cur_td.children();
console.log($(this).data("name"));
// add new td and element if it has a nane
if ($(this).data("name") != undefined) {
var td = $("<td></td>", {
"data-name": $(cur_td).data("name")
});
console.log(children);
$.each(children, function(index, childElement){
var c = $(childElement).clone();
c.attr("name", $(cur_td).data("name") + newid);
if(c.attr("type")=='text'){
c.attr("class", "datepicker-days");
}
if(c.attr("name")=='start'+newid){
c.attr("value", "09:00");
}
if(c.attr("name")=='end'+newid){
c.attr("value", "18:00");
}
c.appendTo($(td));
});
td.appendTo($(tr));
} else {
var td = $("<td></td>", {
'text': $('#days tr').length
}).appendTo($(tr));
}
});
// add the new row
$(tr).appendTo($('#days'));
if(newid==1){
// If is first clone, set Date and remove datepicker class
$("input[name=day1]").prop('readonly', true);
$("input[name=day1]").val($("input[name=data_inicio]").val());
$("input[name=day1]").removeClass("datepicker-days");
$("input[name=start1]").val('09:00');
$("input[name=end1]").val('18:00');
}
$(tr).find("td button.row-remove").on("click", function() {
$(this).closest("tr").remove();
});
对于前进的这个阶段,我很迷茫。 我知道逻辑,但不知道如何到达那里。 如果我没有说清楚,我很抱歉。谢谢。
【问题讨论】:
-
你试过了吗?我在帖子中没有看到任何代码。请阅读:stackoverflow.com/help/mcve 并编辑您的问题
-
@MarcosPérezGude 我用我当前的代码编辑了我的问题。感谢您的提醒。
-
现在您有更多机会获得帮助 :) 我会尝试阅读您的代码,看看如何为您提供帮助。
标签: jquery datepicker bootstrap-datepicker