插件laydate使用類選擇器時的問題


在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了


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM