情況一
背景/需求:
做項目的時候,發現mui的時間控件picker會出現異常彈出。
在點擊時間選擇的div時,控件正常彈出,沒有問題。有問題的是,點擊其他輸入框,在彈出軟鍵盤的同時,時間控件也會隨之出現(在軟鍵盤下方,屏幕移下去時會發現)
這個情況存在於ios上,安卓機測試時暫時沒有發現。
找了很久,提出此問題者寥寥。不過最後還是找到了一個類似的問答:
後來師父復現的時候也找出了問題,並給出瞭解決辦法:
出現這個bug的時候都是沒有點“確定”,直接點控件外部或者取消。
dtpicker.show(function(e) {
XXX
dtpicker.dispose()
});
(show裏面調用的dispose() 指的是點擊“確定”之後,將控件銷燬)
直接點控件外部或者取消,這樣控件其實是被隱藏了,而沒有被銷燬。
解決的辦法是在 hide 里加一行 self.dispose()
然後把dispose 裏的 self.hide() 註釋掉。(不然兩者會調來調去...
情況二
出現的問題:
測試時發現,有時先點擊輸入項,再點擊時間控件,時間控件異常,會同時彈出2個。
後來發現:
在點擊日期控件後,無論是直接失去焦點還是“確定”,在點擊輸入框並失去焦點後都會閃現出時間控件。
如果先前沒有點擊日期控件,則在輸入框失去焦點時不會閃現。
想着時間控件在失去焦點時可能還是沒有被銷燬。
於是在mui的picker.js中做了些修改:
我把每一個addEventListener('tap',function(){
self.hide();
},false);
self.hide()後面都加了dispose()
然後控件是不會重複跳出來了,但是單個控件會跳得老高。目前還沒有找到解決方法。
等找到了再補充。