wTool.js 7.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285
  1. /**
  2. * created By 2019-03-14
  3. * author: wuliangguang
  4. *
  5. */
  6. $(function() {
  7. wTool.aRoll()
  8. wTool.dot()
  9. })
  10. function WTool() {}
  11. WTool.prototype = {
  12. /*
  13. 判断是否使用jQuery
  14. 返回1 有jq, 返回0 无jq
  15. */
  16. hasJq () {
  17. if (typeof jQuery === 'undefined') {
  18. return 1
  19. } else {
  20. return 0
  21. }
  22. },
  23. /*
  24. 手机号验证
  25. */
  26. isMobile(val) {
  27. var mobileRegex = /^((13[0-9])|(14[5,7])|(15[0-3,5-9])|(17[0,3,5-8])|(18[0-9])|166|198|199|(147))\d{8}$/
  28. return mobileRegex.test(val)
  29. },
  30. /*
  31. 微信号 由6-20个字母、数字、下划线和减号组成且必须以字母开头!
  32. */
  33. isWeChat(val) {
  34. var weChatIDRegex = /^[a-zA-Z]{1}[-_a-zA-Z0-9]{5,19}$/
  35. return weChatIDRegex.test(val)
  36. },
  37. /*
  38. 微博账号 ID由4-30个中英文、数字、下划线和减号组成!
  39. */
  40. isWeiBo(val) {
  41. var weBoIDRegex = /^[-_a-zA-Z0-9\u4e00-\u9fa5]{4,30}$/
  42. return weBoIDRegex.test(val)
  43. },
  44. /*
  45. QQ号 由5-11个数字组成!
  46. */
  47. isQQ(val) {
  48. var qqRegex = /^[1-9][0-9]{4,10}$/
  49. return qqRegex.test(val)
  50. },
  51. /*
  52. 获取字符串长度
  53. */
  54. getStringLength(_string) {
  55. var chineseRegex = /[^\x00-\xff]/g
  56. var strLength = _srting.replace(chineseRegex, '**').length
  57. return strLength
  58. },
  59. /*
  60. 超出字符变成...或者不加
  61. */
  62. stringSubstr(_srting, _length, noEllipsis) {
  63. var newLength = 0
  64. var newString = ''
  65. var singleChar = ''
  66. var chineseRegex = /[^\x00-\xff]/g
  67. var strLength = _srting.replace(chineseRegex, '**').length
  68. for (var i = 0; i < strLength; i++) {
  69. singleChar = _srting.charAt(i).toString()
  70. if (singleChar.match(chineseRegex) !== null) {
  71. newLength += 2
  72. } else {
  73. newLength++
  74. }
  75. if (newLength > _length) {
  76. break
  77. }
  78. newString += singleChar
  79. }
  80. strLength > _length && !noEllipsis && (newString += '...')
  81. return newString
  82. },
  83. /*
  84. *判断是不是ie浏览器
  85. *
  86. */
  87. isIE() {
  88. if (!!window.ActiveXObject || 'ActiveXObject' in window) return true
  89. else return false
  90. },
  91. /*
  92. * 滚动回到页面的顶部
  93. */
  94. goBackTop() {
  95. // 设置定时器
  96. let timer = setInterval(function() {
  97. let osTop = document.body.scrollTop || document.documentElement.scrollTop
  98. // ceil向上取整,floor向下取整
  99. let speed = Math.ceil(osTop / 2)
  100. // 做一个变换速度的回到顶部效果
  101. document.body.scrollTop = document.documentElement.scrollTop =
  102. osTop - speed
  103. if (osTop <= 0) {
  104. // 清除定时器
  105. clearInterval(timer)
  106. }
  107. }, 100)
  108. },
  109. /*
  110. * 获取未来某个时间的时间戳
  111. * params {
  112. * stringTime: {
  113. * type: String,
  114. * decs: 需要传递过来的时间,格式为:('2018-07-10 10:20:30')
  115. * }
  116. * }
  117. */
  118. getTimeStamp(stringTime) {
  119. let timestamp = Date.parse(new Date(stringTime))
  120. console.log('的时间戳为:' + timestamp)
  121. return timestamp
  122. },
  123. /*
  124. *获取一个对象的key值,并返回一个数组
  125. *
  126. * 返回一个数组,成员是参数对象自身的(不含继承的)所有可遍历( enumerable )属性的键名
  127. */
  128. getObjectKeys(obj) {
  129. let data = Object.keys(obj)
  130. console.log('keys:', data)
  131. return data
  132. },
  133. /*
  134. * 获取一个对象的所有value值,并返回一个数组
  135. *
  136. *
  137. * 返回一个数组,成员是参数对象自身的(不含继承的)所有可遍历( enumerable )属性的键值。
  138. */
  139. getObjectValues(obj) {
  140. let data = Object.values(obj)
  141. console.log('values:', data)
  142. return data
  143. },
  144. /*
  145. * 获取一个对象由本身的键值对组成的数组,并返回一个数组
  146. *
  147. * example:
  148. * {a, '1', b: '2'}
  149. * 转换后为
  150. * [[a, '1'], [b,'2']]
  151. */
  152. getObjectEntries(obj) {
  153. let data = Object.entries(obj)
  154. console.log('entries:', data)
  155. return data
  156. },
  157. /*
  158. * 将对象转换成真正的Map结构
  159. *
  160. *
  161. */
  162. getObjectMap(obj) {
  163. let data = new Map(Object.entries(obj))
  164. console.log('Map:', data)
  165. return data
  166. },
  167. /*
  168. * 将所有可枚举属性的值从一个或多个源对象复制到目标对象。它将返回目标对象
  169. *
  170. * params {
  171. * obj1: {
  172. * type: Object,
  173. * decs: 目标对象
  174. * },
  175. * obj2: {
  176. * type: Object,
  177. * decs: 源对象
  178. * }
  179. * }
  180. */
  181. combineObject(obj1, obj2) {
  182. let data = Object.assign(obj1, obj2)
  183. console.log('assign', data, obj1, obj2)
  184. return data
  185. },
  186. /**
  187. * 随机整数
  188. * params: {
  189. * n: 整数1,
  190. * m: 整数2
  191. * }
  192. * m > n
  193. */
  194. randomInteger(n, m) {
  195. let random = Math.floor(Math.random() * (m - n + 1) + n)
  196. console.log('随机的整数位:' + random)
  197. return random
  198. },
  199. /**
  200. * desc:锚点滚动美化
  201. */
  202. aRoll(fun, height) {
  203. $('a[href*=#]').on('click', {fun: fun, height: height}, function (e) {
  204. if (typeof e.data.fun == "function") {
  205. e.data.fun.call(this);
  206. }
  207. if (location.pathname.replace(/^\//, '') == this.pathname.replace(/^\//, '') && location.hostname == this.hostname) {
  208. var $target = $(this.hash);
  209. $target = $target.length && $target || $('[name=' + this.hash.slice(1) + ']');
  210. var height
  211. if (e.data.height === 0) {
  212. height = $target.outerHeight()
  213. if ($target.length) {
  214. var targetOffset = $target.offset().top - height
  215. $('html,body').animate({
  216. scrollTop: targetOffset
  217. },
  218. 500);
  219. return false;
  220. }
  221. }
  222. }
  223. })
  224. },
  225. /**
  226. *desc:多行超出省略号
  227. */
  228. dot() {
  229. if (typeof(jQuery.fn.dotdotdot) != "function") {
  230. return;
  231. }
  232. ;
  233. $(".dot").dotdotdot({
  234. wrap: 'letter',
  235. after: 'a'
  236. })
  237. },
  238. /**
  239. * 检测浏览器版本信息
  240. * return ie 6 7 8 9 返回false;其他返回true;
  241. */
  242. browser() {
  243. var browser = navigator.appName;
  244. var b_version = navigator.appVersion;
  245. var version = b_version.split(";");
  246. if (version[1] == undefined || version[1] == "undefined") {
  247. return true;
  248. }
  249. var trim_Version = version[1].replace(/[ ]/g, "");
  250. if (browser == "Microsoft Internet Explorer" && trim_Version == "MSIE6.0") {
  251. return false;
  252. } else if (browser == "Microsoft Internet Explorer" && trim_Version == "MSIE7.0") {
  253. return false;
  254. } else if (browser == "Microsoft Internet Explorer" && trim_Version == "MSIE8.0") {
  255. return false;
  256. } else if (browser == "Microsoft Internet Explorer" && trim_Version == "MSIE9.0") {
  257. return false;
  258. } else {
  259. return true;
  260. }
  261. },
  262. /**
  263. * 正则验证
  264. * regs正则表达式,str验证字段
  265. */
  266. regEx(regs, str) {
  267. var reg = eval(regs);
  268. var re = new RegExp(reg);
  269. $strs = $.trim(str);
  270. if (re.test($strs)) {
  271. return false;
  272. } else {
  273. return true;
  274. }
  275. }
  276. }
  277. const wTool = new WTool()