Bootstap datetimepicker報錯TypeError: intermediate value
Bootstrap datetimepicker有多個版本,官方的鏈接中,只是datepicker,沒有時間的選擇,原版的datetimepicker也不再更新,不能用新版的jquery。
現在https://github.com/Eonasdan/bootstrap-datetimepicker這個版本最完善,但是一大堆依賴很頭疼;
https://github.com/smalot/bootstrap-datetimepicker還不錯,比較輕巧,但是用起來報錯。
報錯:
- TypeError: (intermediate value).toString(...).split(...)[1] is undefined
- ...d"?false:k.title;this.defaultTimeZone=(new Date()).toString().split("(
原文:
- this.defaultTimeZone=(new Date()).toString().split("(")[1].slice(0,-1);
意思為:先取得Date對象,然後再字符串化,再用(來分隔字符串,然後取其中的第二個,再從右向左取第一項,也就是取時區項。
但在Firefox中,字符串化的結果為:“Wed May 25 2016 16:07:14 GMT+0800”,沒有括號,導致錯誤。
更為通用的,時區可以用getTimezoneOffset()來獲取,這個結果的單位是分鐘,所以要除以60才可以:
修改為:
- this.defaultTimeZone='GMT '+(new Date()).getTimezoneOffset()/60
修改後就可以正常使用了。
另外還有一個字體錯誤,如果使用了fa字體,則會報錯,系統中會檢測不到fontAwesome,所以可以直接賦這個變量為true:
- this.fontAwesome=k.fontAwesome||this.element.data("font-awesome")||false;
改為:
- this.fontAwesome=true