1. 程式人生 > >mui.picker和mui的$.back()衝突解決

mui.picker和mui的$.back()衝突解決

最近有需要用到mui的選擇器外掛,初步完成後被告知多次點選選擇框後無法返回上一頁面,如圖: 在這裡插入圖片描述

排查原因結果是picker選擇器重複呼叫:

// 生成時間選擇器
function renderDateSelect(){
	var myDate = new Date();
	//獲取當前年
	var year=myDate.getFullYear();
	//獲取當前月
	var month=myDate.getMonth()+1;
	//獲取當前日
	var date=myDate.getDate();
	var dtPicker = new mui.DtPicker({
	 	type:"date",
	 	beginDate:new Date(year-6,month-1,date),
	 	endDate:myDate
 	});
 	$("#dateSelect").on("touchstart",function(){
 		dtPicker.show(function(selectItems){
		 	$("#dateSelect").val(selectItems.text);
	 	}) 
	}); 
}

因每點選一次按鈕,dtPicker.show()執行一次,所以造成選擇器的重複載入,解決方法如下:

$("#dateSelect").on("touchstart",function(){
 		if($(".mui-dtpicker").hasClass("mui-active")){
 			return false;
 		}else{
 			dtPicker.show(function(selectItems){
			 	$("#dateSelect").val(selectItems.text);
		 	}) 
 		}
	});

因mui.picker選擇器的展示與隱藏是通過新增mui-active類名來實現的,如圖: mui-active控制選擇器隱藏或展示

因此當選擇器存在mui-active類名時,即$(".mui-dtpicker").hasClass(“mui-active”),阻止其彈出時間,避免重複呼叫。