在laydate5.0.3中,使用類選擇器,批量初始化日期監聽時,會出現:點擊第一個input控件,可以正常選擇日期,點擊第二個及之后的input時,日期控件會閃一下,然后被移除掉。
初始化代碼:
laydate.render({ elem:".date" });
問題原因:
//綁定關閉控件事件 lay(document).on('click', function(e){ if(e.target === options.elem[0] || e.target === options.eventElem[0] || e.target === lay(options.closeStop)[0]){ return; } that.remove(); }).on('keydown', function(e){ if(e.keyCode === 13){ if(lay('#'+ that.elemID)[0] && that.elemID === Class.thisElem){ e.preventDefault(); lay(that.footer).find(ELEM_CONFIRM)[0].click(); } } });
if語句里,只判斷當前觸發的點是否跟初始化時的控件列表里的第一個比較是否相等,在使用id初始化控件時,沒問題,因為只有一個,但當使用類作為選擇器初始化時,就會出現第二個及以后的控件有問題
解決辦法:
//綁定關閉控件事件 lay(document).on('click', function(e){ if(selectElemIsInElems(e.target, options.elem) || e.target === options.eventElem[0] || e.target === lay(options.closeStop)[0]){ return; } that.remove(); }).on('keydown', function(e){ if(e.keyCode === 13){ if(lay('#'+ that.elemID)[0] && that.elemID === Class.thisElem){ e.preventDefault(); lay(that.footer).find(ELEM_CONFIRM)[0].click(); } } });
//檢查當前元素是否在元素列表里 function selectElemIsInElems(elem, elems){ var flag = false; for(var i=0;i < elems.length;i++ ){ if(elem === elems[i]){ flag = true; return true; } } return flag; }
這樣,就OK了
