业务需求是需要填写日期,使用的是日期插件 ,因为需要批量添加,所以使用js的克隆方法,批量克隆控件
其中的日期控件因为是利用字段名称自动生成的ID,克隆之后的ID都一样,所以没法独立使用,
解决方法是克隆之后遍历查询到ID,替换成带有后缀的ID,使其每个都是独立的,然后实例化date;
$this->registerJs(' $(".ui-autocomplete-input").addClass("form-control"); $(".card_add").click(function(){ var listLength = $(".card-list").children().length; var lastModel = $(".card-list").children("div:last-child"); var newItem = lastModel.clone(); var dateInitList = []; newItem.find(":input").each(function(i){ var tObj = $(this); tObj.val(""); if (tObj.attr("id")) { var newId = tObj.attr("id") + "_" + listLength; tObj.attr("id", newId); if (tObj.attr("data-krajee-datetimepicker")) { // tObj.removeAttr("data-krajee-datetimepicker"); dateInitList.push({id: newId}); } } }); lastModel.after(newItem); console.log("list:", dateInitList); for (var i=0; i < dateInitList.length; i++) { console.log("init new dateTimePicker--",i,dateInitList[i]); $("#"+dateInitList[i].id).datetimepicker({"minView":2,"format":"yyyy-mm-dd","autoclose":true,"language":"zh-CN"}); } }); $(".card-list").on("click",".card-delete",function (){ var length = $(".card-list").children().length; if (length <= 1) { alert("至少保留一条信息"); return false; } var currentDom = $(this).parent().parent(); console.log("===",currentDom); currentDom.remove(); }); '); ?>
附赠代码
其中使用datetimepicker时,只要吧配置项按照json格式传入即可;