鍍金池/ 問(wèn)答/HTML5  HTML/ h5在移動(dòng)端使用type為date,且加上onchange方法時(shí),ios手機(jī)日期

h5在移動(dòng)端使用type為date,且加上onchange方法時(shí),ios手機(jī)日期控件不點(diǎn)確定,自己消失

使用的框架是angularjs
代碼為

<input type="date" id="beginDate" name="beginDate" ng-model="beginDate"
              placeholder="yyyy-MM-dd" ng-change="dosth()" required />

以上代碼在安卓手機(jī)上正常運(yùn)行
但是在ios手機(jī)上時(shí),我稍微劃一下系統(tǒng)日期控件,我還沒(méi)有點(diǎn)擊確定,ios自己就把日期控件隱藏了,同時(shí)執(zhí)行我的dosth方法,這個(gè)用戶體驗(yàn)太差了,如果把ng-change="dosth()"這句去掉,又可以正常使用了,但是就不能執(zhí)行切換事件了
請(qǐng)問(wèn)有沒(méi)有什么好的辦法解決我的問(wèn)題

回答
編輯回答
初念

直接用onchange事件試試

2018年5月29日 03:15
編輯回答
愛(ài)礙唉

問(wèn)題很簡(jiǎn)單,也是我經(jīng)驗(yàn)不足,angularjs框架在移動(dòng)端,它的date組件,ng-change執(zhí)行時(shí)間在安卓和ios端不同,安卓是點(diǎn)擊確定時(shí)執(zhí)行ng-change事件,ios是你滑動(dòng)一下組件即執(zhí)行ng-change事件,故只需改成ios在blur狀態(tài)執(zhí)行事件即可。
具體方法是

<input type="date" id="beginDate" name="beginDate" ng-model="beginDate"
              placeholder="yyyy-MM-dd" ng-change="dosth()" ng-blur="dosth2()" required />

在dosth和dosth2方法里進(jìn)行判斷是安卓還是ios,然后執(zhí)行對(duì)應(yīng)的事件即可。
當(dāng)然最好的方法,也是推薦的方法是封裝成一個(gè)指令,這里就不說(shuō)了,如果有需要可私聊我。

2017年6月26日 09:07