今天在做一个时间插件显示效果,界面如下:
现在点击【添加付款单】按钮,会再出现一条记录,但新增加的记录却不能触发插件效果(由于js写法是针对元素class的,按常规来说是可以触发的)
开始以为是未来元素的问题,于是先按自己思路改写了live方法绑定,还是不行,后又网上搜了一大批方式,结果都不行。
最后只得求助于同事,于是给出如下方案,终于解决了(解决思路:把datetimepicker相关代码封装为一个方法,然后在添加一个未来元素时,主动调用这个方法)
以下是相关代码:
(1)这是添加支付行的相关代码,添加写入后会主动触发datetimepicker封装的方法:
// 添加支付行
$(".addApplyPayBtn").click(function(){
tr = '<tr class="applyPayTr">'
+ '<td><input type="text" class="h28-text blueFocus w80 price" value="" onkeyup="value=value.replace(/[^\\d{1,}\\.\\d{1,}|\\d{1,}]/g,\'\')"></td>'
+ '<td><input type="text" class="h28-text blueFocus w100 searchDate date" value=""></td>'
+ '<td><textarea class="gy-area blueFocus border-box w f12 remark" rows="3"></textarea></td>'
+ '<td><a class="h28-table-btn ml5 removeApplyPayBtn"><i class="icon iconfont erp-del mr3 f14"></i>移除</a></td>'
+ '</tr>';
$(".applyPayBox").find(".applyPayListTab").append(tr);
bindDatetimepicker();
});
(2)这是封装的datetimepicker方法:
function bindDatetimepicker() {
$('.searchDate').datetimepicker({
yearOffset:0,
timepicker:false,
format:'Y-m-d',
formatDate:'Y-m-d'
});
}
最后附图一张成功后的效果: