1<!doctype html> 2<html lang="zh-TW"> 3<head> 4 <meta charset="utf-8"> 5 <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> 6 7 <link rel="shortcut icon" href="/images/favicon.ico" type="image/x-icon"> 8 <link rel="icon" href="/images/favicon-32.png" sizes="32x32"> 9 <link rel="icon" href="/images/favicon-48.png" sizes="48x48"> 10 <link rel="icon" href="/images/favicon-96.png" sizes="96x96"> 11 12 <link rel="stylesheet" href="/css/bootstrap.min.css"> 13 <link rel="stylesheet" href="/css/style.css?r=20260924220634"> 14 <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Lato:400,700%7CMontserrat:300,400,600,700"> 15 16 <link rel="stylesheet" href="/icons/fontawesome/css/fontawesome-all.min.css"><!-- FontAwesome Icons --> 17 <link rel="stylesheet" href="/icons/Iconsmind__Ultimate_Pack/Line%20icons/styles.min.css"><!-- iconsmind.com Icons --> 18 19 <title>GOGO CAREï½å°ç£é·ç §èª²ç¨å½±é³å¹³å°</title> 20 <meta name="description" content="å¾¹åºææ¡ç §è·å¡çåºæ¬æ¦å¿µã課ç¨åç±å°æ¥ç¼èå®ä½å¹è¨å¡è¨è¨ï¼æä¾è±å¯ç實ç¨ç·´ç¿èç實ç¯ä¾ï¼å¹«æ¨å¸ä»¥è´ç¨ãééçµæ¥è試ï¼å°±è½åå¾èªèã" />
vendor: 64 bytes, lines 20-21
20 21 <script src="https://www.google.com/recaptcha/api.js?render=
216LfOSpYiAAAAAL3PIBUBT9gis1j7y43K0g84b2BG
vendor: 14 bytes, lines 21-22
21"></script> 22
22<script src="/js/libs/jquery-3.3.1.min.js"></script>
22<!--jQuery --> 23 <link href="/js/sweetalert2/sweetalert2.min.css" rel="stylesheet" type="text/css" /> 24
24<script src="/js/sweetalert2/es6-promise.auto.js"></script>
24 25
25<script src="/js/sweetalert2/sweetalert2.min.js"></script>
25 26 <link rel="stylesheet" href="/js/jquery-ui-1.13.3.custom/jquery-ui.css"> 27
27<script src="/js/jquery-ui-1.13.3.custom/jquery-ui.min.js" defer></script>
27 28 <!-- Google tag (gtag.js) -- LS -->
vendor: 66 bytes, lines 28-29
28 29 <script async src="https://www.googletagmanager.com/gtag/js?id=
29G-QCPS3JN0HE
vendor: 14 bytes, lines 29-30
29"></script> 30
30<script> 31
vendor: 138 bytes, lines 31-35
31window.dataLayer = window.dataLayer || []; 32 function gtag(){dataLayer.push(arguments);} 33 gtag('js', new Date()); 34 35 gtag('config', '
35G-QCPS3JN0HE
vendor: 6 bytes, lines 35-36
35'); 36
36</script>
36 37 <!-- Google tag (gtag.js) -->
vendor: 66 bytes, lines 37-38
37 38 <script async src="https://www.googletagmanager.com/gtag/js?id=
38G-0TGJ2BVFRH
vendor: 14 bytes, lines 38-39
38"></script> 39
39<script> 40
vendor: 135 bytes, lines 40-44
40window.dataLayer = window.dataLayer || []; 41 function gtag(){dataLayer.push(arguments);} 42 gtag('js', new Date()); 43 44 gtag('config', '
44G-0TGJ2BVFRH
vendor: 6 bytes, lines 44-45
44'); 45
45</script>
45 46 <style> 47 .autocomplete-item { 48 display: flex; 49 align-items: center; 50 } 51 .autocomplete-item img { 52 margin-right: 10px; 53 } 54 .ui-autocomplete { 55 z-index: 999; 56 } 57 #video-search-header input{ 58 width: auto; 59 text-align: left; 60 } 61 #video-search-header select.custom-select{ 62 font-size: .9rem; 63 font-weight: bold; 64 border-radius: 0; 65 height: calc(2.25rem + 4px); 66 background: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") #f9f9f9 no-repeat right .75rem center/8px 23px; 67 } 68 #video-search-header select.custom-select optgroup{ 69 padding: 0.5rem 1.5rem; 70 font-size: 0.875rem; 71 color: #6c757d; 72 white-space: nowrap; 73 } 74 #video-search-header select.custom-select option{ 75 padding: 0.25rem 1.5rem; 76 font-size: .9rem; 77 font-weight: 400; 78 color: #212529; 79 white-space: nowrap; 80 } 81 #search-mobile{ 82 border :2px solid rgba(0,0,0,.09); 83 background:none; 84 padding: 9px 20px; 85 /* padding: 9px 15px 9px 20px; */ 86 margin: 15px auto; 87 /* margin: 15px 0 15px auto; */ 88 font-size: 15px; 89 color: #444444; 90 font-family: 'Montserrat', sans-serif; 91 font-weight: 400; 92 width: calc(100% - 40px); 93 /* width: 18%; */ 94 height: 49px; 95 border-radius: 30px; 96 /* border-bottom-left-radius: 30px ; 97 border-top-left-radius: 30px; */ 98 } 99 #search-mobile:focus{ 100 transition-duration: 250ms; 101 transition-property: all; 102 transition-timing-function: ease-in-out; border-color: #80bdff; 103 } 104 #search-mobile:focus { 105 border-color: #80bdff; 106 outline: none; 107 } 108 #search-mobile-nav-pro{ 109 position: relative; 110 } 111 #search-mobile-nav-pro input { 112 background-image: none; 113 border-radius: 30px; 114 /*border-bottom-right-radius: 30px; 115 border-top-right-radius: 30px;*/ 116 width: calc(100% - 94px); 117 font-size: 15px; 118 margin-top: 0px; 119 } 120 @media only screen and (max-width: 760px) { 121 #search-mobile-nav-pro input { 122 /*width: 60%;*/ 123 } 124 } 125 126 #search-mobile{ 127 /* 確ä¿ä¸æé®æå°å®¢è£½ç arrow */ 128 position: relative; 129 z-index: 1; 130 131 /* é±è <select> é è¨çç®é æ¨£å¼ */ 132 appearance: none; /* For modern browsers */ 133 -webkit-appearance: none; /* For Safari and Chrome */ 134 -moz-appearance: none; /* For Firefox */ 135 background: transparent; /* è®èæ¯éæä»¥é²æ¢é¡¯ç¤ºé è¨çç®é èæ¯ */ 136 } 137 #search-mobile-nav-pro:before{ 138 position: absolute; 139 pointer-events: none; 140 right: 40px; 141 top: 40px; 142 transform: translateY(-25%); 143 width: 0px; 144 height: 0px; 145 content: ''; 146 border: 5px solid transparent; 147 border-top: 5px solid #000; 148 } 149 </style> 150</head> 151<body> 152 <div id="sidebar-bg"> 153 <header id="videohead-pro" class="sticky-header"> 154 <div id="video-logo-background"><a href="/tw/index.html"><img src="/images/logo.svg" alt="Logo"></a></div> 155 <div id="mobile-bars-icon-pro" class="noselect"><i class="fas fa-bars"></i></div> 156 <div id="mobile-bars-icon-pro" class="noselect mobile_search_btn"><i class="fas fa-search"></i></div> 157 <button class="btn btn-header-pro noselect dis_no_md" onclick="location.href='/tw/mem/login';">ç»å ¥</button> 158 <button class="btn btn-header-pro noselect dis_no_md" onclick="location.href='/tw/bebusiness.html'">伿¥å å ¥GOGO CARE</button> 159 <div class="clearfix dis-none m-dis-block"></div> 160 161 <button onclick="location.href='/tw/help.html'" class="btn btn-header-pro noselect dis_no_md">常è¦åç</button> 162 163 <button onclick="location.href='/tw/question.html'" class="btn btn-header-pro noselect dis_no_md">æè¦æå</button> 164 <!-- å¤èªç³»æ°å¢ Start --> 165 <button onclick="location.href='/en/global_login.html'" class="btn btn-header-pro noselect dis_no_md"><i class="fas fa-globe"></i> Global Versions</button> 166 <!-- å¤èªç³»æ°å¢ End --> 167 <form action="/tw/course/search.html" id='srh_form2' name='srh_form2' method='GET'> 168 <div id="search-mobile-nav-pro" class="mobile-searchbar dis-none"> 169 <select name="course_kind" id="search-mobile"> 170 <!-- <option value="">è«é¸æ</option> --> 171 <option value="" disabled selected hidden style="background: #545b62;">å顿¾èª²</option> 172 <!-- <optgroup label="éè£ç©å"> 173 <option value="1">ç¶æç©å課ç¨</option> 174 <option value="2">䏿ç©å課ç¨</option> 175 </optgroup> --> 176 <optgroup label="ç©å主é¡"> 177 <option value="p_01">å°æ¥èª²ç¨</option> 178 <option value="p_02">å°æ¥å質</option> 179 <option value="p_03">å°æ¥å«ç</option> 180 <option value="p_04">å°æ¥æ³è¦</option> 181 <option value="p_05">éç©å課ç¨</option> 182 <option value="p_06">ç©åç³è«ä¸</option> 183 </optgroup> 184 <optgroup label="ç¹æ¾ç©å"> 185 <option value="c_10">ææç®¡å¶</option> 186 <option value="c_11">ç·æ¥æè®</option> 187 <option value="c_12">æ¶é²å®å ¨</option> 188 <option value="c_13">æ§å¥ææåº¦</option> 189 <option value="c_19">å使°ææåææåº¦åè½å</option> 190 <option value="c_14">å¤å æç¾¤æåææåº¦åè½å</option> 191 <option value="c_16">éç©å課ç¨</option> 192 <option value="c_20">å ¶ä»</option> 193 <option value="c_21">ç©åç³è«ä¸</option> 194 </optgroup> 195 </select> 196 <input type="text" id="srh_key_word" name="srh_key_word" value="" placeholder="ééµåï¼å¦ï¼æ¶é²ãç·æ¥æè®" aria-label="Search"> 197 <button type='submit' class="btn btn-green-pro noselect"><i class="fas fa-search"></i></button> 198 </div> 199 </form> 200 <form action="/tw/course/search.html" id='srh_form' name='srh_form' method='GET'> 201 <div id="video-search-header"> 202 <div class="input-group" style="margin-top: 20px; margin-bottom: 20px; margin-left: 20px;"> 203 <div class="input-group-prepend"> 204 <select name="course_kind" style="width:120px;" class="custom-select form-control"> 205 <!-- <option value="">è«é¸æ</option> --> 206 <option value="" disabled selected hidden style="background: #545b62;">å顿¾èª²</option> 207 <!-- <optgroup label="éè£ç©å"> 208 <option value="1">ç¶æç©å課ç¨</option> 209 <option value="2">䏿ç©å課ç¨</option> 210 </optgroup> --> 211 <optgroup label="ç©å主é¡"> 212 <option value="p_01">å°æ¥èª²ç¨</option> 213 <option value="p_02">å°æ¥å質</option> 214 <option value="p_03">å°æ¥å«ç</option> 215 <option value="p_04">å°æ¥æ³è¦</option> 216 <option value="p_05">éç©å課ç¨</option> 217 <option value="p_06">ç©åç³è«ä¸</option> 218 </optgroup> 219 <optgroup label="ç¹æ¾ç©å"> 220 <option value="c_10">ææç®¡å¶</option> 221 <option value="c_11">ç·æ¥æè®</option> 222 <option value="c_12">æ¶é²å®å ¨</option> 223 <option value="c_13">æ§å¥ææåº¦</option> 224 <option value="c_19">å使°ææåææåº¦åè½å</option> 225 <option value="c_14">å¤å æç¾¤æåææåº¦åè½å</option> 226 <option value="c_16">éç©å課ç¨</option> 227 <option value="c_20">å ¶ä»</option> 228 <option value="c_21">ç©åç³è«ä¸</option> 229 </optgroup> 230 </select> 231 </div> 232 <input style="width:180px;" class="form-control" autocomplete="off" type="text" id="keyword" name="srh_key_word" value="" placeholder="ééµåï¼å¦ï¼æ¶é²ãç·æ¥æè®" aria-label="Search"> 233 <button class="btn btn-header-pro noselect dis_no_md btn-green-pro" type="submit">æå°</button> 234 </div> 235 <input type="hidden" id="srh_sort" name="srh_sort" value=""> 236 </div> 237 </form> 238 <!-- å¾ å®æ end --> 239 <div class="clearfix"></div> 240 <nav id="mobile-navigation-pro"> 241 <div style="width: 100%; padding: 20px;"> 242 <button class="btn btn-mobile-pro btn-green-pro noselect mb-10" onclick="location.href='/tw/teach/login';">æå¸«ç»å ¥ / 註å</button> 243 <button class="btn btn-mobile-pro btn-green-pro noselect" onclick="location.href='/tw/mem/login';">å¸å¡ç»å ¥ / 註å</button> 244 <!-- å¤èªç³»æ°å¢ Start --> 245 <button class="btn btn-mobile-pro btn-green-pro noselect mt-10" onclick="location.href='/en/global_login.html';"><i class="fas fa-globe"></i> Global Versions</button> 246 <!-- å¤èªç³»æ°å¢ End --> 247 </div> 248 <ul id="mobile-menu-pro"> 249 <!-- <li class="normal-item-pro "> 250 <a href="/tw/index.html" title="ç²¾é¸æ¨è¦"><img class="nav_img nav_1" src="/images/icon/nav_1.svg" alt="ç²¾é¸æ¨è¦" /> ç²¾é¸æ¨è¦</a> --> 251 </li> 252 <li class="normal-item-pro "> 253 <a href="/tw/course/list.html" title="ææèª²ç¨"><img class="nav_img nav_3" src="/images/icon/nav_3.svg" alt="ææèª²ç¨" /> ææèª²ç¨</a> 254 <li> 255 <li class="normal-item-pro "> 256 <a href="/tw/package/list.html" alt="/tw/package/list.html" title="å¸ç¿å¥é¤"><img class="nav_img nav_4" src="/images/icon/nav_4.svg" alt="å¸ç¿å¥é¤" /> å¸ç¿å¥é¤</a> 257 </li> 258 <li class="normal-item-pro "> 259 <a href="/tw/article.html" title="é±è®å¥½æ"><img class="nav_img nav_5" src="/images/icon/nav_5.svg" alt="é±è®å¥½æ" /> é±è®å¥½æ</a> 260 </li> 261 <li class="normal-item-pro "> 262 <a href="/tw/events.html" title="ææ°æ´»å"><img class="nav_img nav_6" src="/images/icon/nav_6.svg" alt="ææ°æ´»å" /> ææ°æ´»å</a> 263 </li> 264 <li class="normal-item-pro "> 265 <a href="/tw/about.html" title="éæ¼æå"><img class="nav_img nav_7" src="/images/icon/nav_7.svg" alt="éæ¼æå" /> éæ¼æå</a> 266 </li> 267 <li class="normal-item-pro "> 268 <a href="/tw/help.html" title="常è¦åç"><span class="fa fa-question" style="width: 35px; text-align: center; padding: 3px 0 3px 15px; margin-right: 10px;"></span>常è¦åç</a> 269 </li> 270 </ul> 271 <div class="clearfix"></div> 272 </nav>
273 </header> 274 275 276 277 <nav id="sidebar-nav"> 278 <ul id="vertical-sidebar-nav" class="sf-menu"> 279 <li class="normal-item-pro "> 280 <a href="/tw/course/list.html" title="ææèª²ç¨"><img class="nav_img nav_3" src="/images/icon/nav_3.svg" alt="ææèª²ç¨" /><br />ææèª²ç¨</a> 281 </li> 282 <li class="normal-item-pro "> 283 <a href="/tw/package/list.html" alt="/tw/package/list.html" title="å¸ç¿å¥é¤"><img class="nav_img nav_4" src="/images/icon/nav_4.svg" alt="å¸ç¿å¥é¤" /><br />å¸ç¿å¥é¤</a> 284 </li> 285 <li class="normal-item-pro "> 286 <a href="/tw/article.html" title="é±è®å¥½æ"><img class="nav_img nav_5" src="/images/icon/nav_5.svg" alt="é±è®å¥½æ" /><br />é±è®å¥½æ</a> 287 </li> 288 <li class="normal-item-pro "> 289 <a href="/tw/events.html" title="ææ°æ´»å"><img class="nav_img nav_6" src="/images/icon/nav_6.svg" alt="ææ°æ´»å" /><br />ææ°æ´»å</a> 290 </li> 291 <li class="normal-item-pro "> 292 <a href="/tw/about.html" title="éæ¼æå"><img class="nav_img nav_7" src="/images/icon/nav_7.svg" alt="éæ¼æå" /><br />éæ¼æå</a> 293 </li> 294 295 </ul> 296 <div class="clearfix"></div> 297 </nav> 298 299 <div class="clearfix"></div><style> 300 .mem_logor{ 301 position: relative; 302 } 303 .mem_logor:before{ 304 content: ''; 305 background: #e7e7e7; 306 height: 1px; 307 width: 100%; 308 top: 12px; 309 left: 0; 310 position: absolute; 311 } 312 313</style> 314 315 <main id="col-main"> 316 <div id="pricing-plans-background-image"> 317 <div class="container"> 318 <div class="registration-steps-page-container"> 319 <div class="centered-headings-pro pricing-plans-headings"> 320 <h2 style="padding-top: 50px;">æ¡è¿åä¾GOGO CARE</h2> 321 <!-- <h6>Lorem ipsum dolor sit amet consectetur adipisicing elit. </h6> --> 322 </div> 323 <hr> 324 <div class="p-40" style="padding: 40px;"> 325 <h4>å¿«éç»å ¥</h4> 326 <p><i class="fas fa-info-circle"></i> 忬¡ä½¿ç¨éå 宿ä¸è¬è¨»åç³è«åå¿«éç»å ¥è¨å®ã</p> 327 <div class="d-flex flex-row justify-content-around col-12 text-center"> 328 <a href="javascript:" onclick="google_api('mem','')"><i class="fab fa-google" style="font-size: 3.5em;"></i><p style="padding-top: 5px;">GOOGLE</p></a> 329 <a href="javascript:" onclick="line_api('mem')"><i class="fab fa-line" style="font-size: 3.5em;"></i><p style="padding-top: 5px;">LINE</p></a> 330 <a href="javascript:" data-toggle="modal" data-target="#idno_login"><i class="fas fa-id-card" style="font-size: 3.5em;"></i><p style="padding-top: 5px;">身åèè</p></a> 331 </div> 332 <h4 class="text-center my-3 col-12 mem_logor"><span style="background: #fff; padding: 15px; position:relative; z-index: 3;">æ</span></h4> 333 <h4>å¸å¡ç»å ¥</h4> 334 <div id="login_tabs"> 335 <div class="login_tabs"> 336 <button type="button" class="login_tabs_btn is-active" data-tab="tab2"><i class="far fa-envelope"></i> 帳èå¯ç¢¼</button> 337 <button type="button" class="login_tabs_btn" data-tab="tab1"><i class="fas fa-mobile-alt"></i> ææ©è碼</button> 338 </div> 339 <div class="login_tabs_content"> 340 <div class="login_tabs_panel" data-tab-panel="tab1"> 341 <form class="col-12" id="mem_login_form_mobile" name="mem_login_form_mobile" method="post" onSubmit="mem_getToken('mem_login_form_mobile', event)"> 342 <div class="form-group row"> 343 <label for="nphone" class="col-sm-2 col-form-label">ææ©è碼ï¼</label> 344 <div class="col-sm-10"> 345 <input class="form-control" type="phone" name="phone" id="phone"> 346 </div> 347 </div> 348 <div class="form-group row"> 349 <label for="fm-smscode" class="col-sm-2 col-form-label">é©è碼ï¼</label> 350 <div class="input-wrap-vercode col-sm-10"> 351 <input name="vcode" type="text" class="form-control" id="fm-smscode"> 352 <div class="vercode-send-btn"> 353 <a href="JavaScript:void(0)" class="send-btn-link" id="send_verify">ç²åé©è碼 <i class="fas fa-mouse-pointer"></i> 354 </a> 355 </div> 356 </div> 357 </div> 358 <div class="form-group row"> 359 <div class="col-sm-2"></div> 360 <div class="col-sm-10"> 361 <button type="submit" onclick="login_type='mobile'" class="btn btn-green-pro btn-display-block ml-0">ç»å ¥</button> 362 </div> 363 </div> 364 </form> 365 </div> 366 <div class="login_tabs_panel is-active" data-tab-panel="tab2"> 367 <form class="col-12" id="mem_login_form" name="mem_login_form" method="post" onSubmit="mem_getToken('mem_login_form', event)"> 368 <div class="form-group row"> 369 <label for="login_account" class="col-sm-2 col-form-label">帳èï¼</label> 370 <div class="col-sm-10"> 371 <input type="email" class="form-control" id="login_account" placeholder="è«è¼¸å ¥å¸³è" name="login_account"> 372 </div> 373 </div> 374 <div class="form-group row"> 375 <label for="login_password" class="col-sm-2 col-form-label">å¯ç¢¼ï¼</label>
376 <div class="col-sm-10 input-group"> 377 <input type="password" class="form-control" id="login_password" placeholder="è«è¼¸å ¥å¯ç¢¼" name="login_password"> 378 <div class="input-group-append" id="password_show"> 379 <span class="input-group-text" id="basic-addon2"> 380 <i class="fa fa-eye-slash"></i> 381 </span> 382 </div> 383 </div> 384 </div> 385 <div class="form-group row"> 386 <div class="col-sm-2"></div> 387 <div class="col-sm-10"> 388 <button type="submit" onclick="login_type='account'" class="btn btn-green-pro btn-display-block ml-0">ç»å ¥</button> 389 </div> 390 </div> 391 </form> 392 </div> 393 </div> 394 </div> 395 <!-- <form class="col-12" id="mem_login_form" name="mem_login_form" method="post" onSubmit="mem_getToken('mem_login_form', event)"> 396 <div class="form-group row"> 397 <label for="login_account" class="col-sm-2 col-form-label">帳èï¼</label> 398 <div class="col-sm-10"> 399 <input type="email" class="form-control" id="login_account" placeholder="è«è¼¸å ¥å¸³è" name="login_account"> 400 </div> 401 </div> 402 <div class="form-group row"> 403 <label for="login_password" class="col-sm-2 col-form-label">å¯ç¢¼ï¼</label> 404 <div class="col-sm-10 input-group"> 405 <input type="password" class="form-control" id="login_password" placeholder="è«è¼¸å ¥å¯ç¢¼" name="login_password"> 406 <div class="input-group-append" id="password_show"> 407 <span class="input-group-text" id="basic-addon2"> 408 <i class="fa fa-eye-slash"></i> 409 </span> 410 </div> 411 </div> 412 </div> 413 <div class="form-group row"> 414 <div class="col-sm-2"></div> 415 <div class="col-sm-10"> 416 <button type="submit" class="btn btn-green-pro btn-display-block ml-0">ç»å ¥</button> 417 </div> 418 </div> 419 </form> --> 420 <hr> 421 <h4>å ¶ä»åå©</h4> 422 <div class="col-12 row m-0_sm"> 423 <div class="col-sm text-center pb-10"> 424 <a href="/tw/mem/register" class="btn btn-warning btn-display-block ml-0">å¸å¡è¨»å</a> 425 </div> 426 <div class="col-sm text-center pb-10"> 427 <a href="/tw/mem/forget_password" class="btn btn-success btn-display-block ml-0">å¿è¨å¯ç¢¼</a> 428 </div> 429 <!-- <div class="col-sm text-center pb-10"> 430 <a href="/tw/mem/resend_email" class="btn btn-success btn-display-block ml-0">éç¼è¨»åé©èä¿¡</a> 431 </div> --> 432 </div> 433 <hr> 434 <div class="col-12 row m-0_sm"> 435 <div class="col-sm text-center pb-10"> 436 <a href="/lsback_site/" class="btn btn-secondary btn-display-block ml-0">GOGOCARE 伿¥ç¨æ¶ç»å ¥</a> 437 </div> 438 <div class="col-sm text-center pb-10"> 439 <a href="/tw/teach/login" class="btn btn-green btn-display-block ml-0">GOGOCARE æå¸«ç»å ¥</a> 440 </div> 441 442 </div> 443 </div> 444 </div><!-- close .container --> 445 </div><!-- close #pricing-plans-background-image --> 446 </main> 447 </body> 448</html> 449<div class="modal fade" id="idno_login" tabindex="-1" role="dialog" aria-labelledby="idno_login" aria-hidden="true"> 450 <div class="modal-dialog" role="document"> 451 <div class="modal-content"> 452 <div class="modal-header"> 453 <h5 class="modal-title" id="exampleModalLabel">å¿«éç»å ¥</h5> 454 <button type="button" class="close" data-dismiss="modal" aria-label="Close"> 455 <span aria-hidden="true">×</span> 456 </button> 457 </div> 458 <form id="idno_login_form"> 459 <div class="modal-body"> 460 <div class="form-group form-inline"> 461 <label class="mr-3" for="login_idno">身åèåè/å± çèèï¼</label><input class="form-control" type="password" id="login_idno" name="login_idno"> 462 </div> 463 </div> 464 <div class="modal-footer"> 465 <button type="submit" id="idno_login_btn" class="btn btn-green-pro">ç»å ¥</button> 466 </div> 467 </form> 468 </div> 469 </div> 470</div> 471
472<script> 473let has_submit = false; 474let login_type; 475 476$(document).ready(function() { 477 // tab 478 var $tabs = $('#login_tabs'); 479 function openTab(tabId, pushHash) { 480 // åæé active 481 $tabs.find('.login_tabs_btn').removeClass('is-active'); 482 $tabs.find('.login_tabs_btn[data-tab="' + tabId + '"]').addClass('is-active'); 483 // åå §å®¹ active 484 $tabs.find('.login_tabs_panel').removeClass('is-active'); 485 $tabs.find('.login_tabs_panel[data-tab-panel="' + tabId + '"]').addClass('is-active'); 486 487 // å¯é¸ï¼æ´æ°ç¶²å hash 488 // if (pushHash) { 489 // window.location.hash = tabId; 490 // } 491 } 492 493 // 黿åæï¼äºä»¶å§æ´¾ï¼åæ æ°å¢ tab ä¹å¯ç¨ï¼ 494 $tabs.on('click', '.login_tabs_btn', function () { 495 var tabId = $(this).data('tab'); 496 openTab(tabId, true); 497 }); 498 499 // å¯é¸ï¼å¦æç¶²åæ hashï¼#tab2ï¼ï¼å°±éå®ï¼å¦åä¿æé è¨ 500 var hash = (window.location.hash || '').replace('#', ''); 501 if (hash && $tabs.find('.login_tabs_btn[data-tab="' + hash + '"]').length) { 502 openTab(hash, false); 503 } 504 // äºä»¶ç¶å® 505 $("#send_verify").on("click", send_mobile_verify); 506 $('#idno_login_form').on('submit', async function(event) { 507 event.preventDefault(); 508 if (has_submit) return; 509 has_submit = true; 510 try { 511 let idno = $('#login_idno').val(); 512 let res = await $.ajax({
513 url: '/mem/save.php?action=quick_login_idno', 514 method: 'post', 515 dataType: 'JSON', 516 data: { 517 idno: idno 518 } 519 }); 520 $('#idno_login').modal('hide'); 521 await swal('ç»å ¥æå', '', 'success'); 522 if (res && res.data && res.data.redirectURL) { 523 window.location.href = res.data.redirectURL; 524 } else { 525 // è¥å¾ç«¯æªåå³ redirectURLï¼åå°é¦é æéæ°æ´ç 526 window.location.reload(); 527 } 528 } catch (error) { 529 $('#idno_login').modal('hide'); 530 $("#login_idno").val(''); 531 const data = (error && error.responseJSON) ? error.responseJSON : null; 532 if (data && data.status) { 533 switch (data.status) { 534 case '404': 535 await swal(data.message, '', 'error'); 536 break; 537 default: 538 await swal(data.message || 'ç¼çé¯èª¤ï¼è«ç¨å¾å試', '', 'error'); 539 break; 540 } 541 } else { 542 await swal('系統é¯èª¤ï¼è«ç¨å¾å試', '', 'error'); 543 } 544 console.error(error); 545 } finally { 546 has_submit = false; 547 } 548 }); 549}); 550 551function mem_getToken(fname, event) { 552 553 event.preventDefault(); 554 switch (login_type) { 555 case 'mobile': 556 let phone = $('#phone').val().trim(); 557 let vcode = $('#fm-smscode').val().trim(); 558 if (phone == '') { 559 swal('è«è¼¸å ¥ææ©è碼.', '', 'error'); 560 return false; 561 } 562 if (vcode == '') { 563 swal('è«è¼¸å ¥é©è碼.', '', 'error'); 564 return false; 565 } 566 break; 567 case 'account': 568 var login_account = $('#login_account').val(); 569 var login_password = $('#login_password').val(); 570 571 if (IsEmail(login_account) == 0) 572 { 573 swal('é»åéµä»¶æ ¼å¼æèª¤, è«éæ°ç¢ºèª.', '', 'error'); 574 return false; 575 } 576 577 if (login_password == '') { 578 swal('è«å¡«å¯«å¯ç¢¼.', '', 'error'); 579 return false; 580 } 581 break; 582 default: 583 window.location.reload(); 584 break; 585 } 586 587 588 grecaptcha.ready(function() { 589 grecaptcha.execute('6LfOSpYiAAAAAL3PIBUBT9gis1j7y43K0g84b2BG', { action: fname }).then(function(token) { 590 var button = document.createElement('input'); 591 button.type = 'hidden'; 592 button.name = 'recaptcha_token'; 593 button.id = 'recaptcha_token'; 594 button.value = token; 595 596 var form = document.getElementById(fname); 597 form.appendChild(button); 598 599 var formData = new FormData($("#"+fname)[0]); 600 // å°login_typeå å ¥formData 601 formData.append('login_type', login_type); 602 603 $.ajax({ 604 type: "POST", 605 url: "/member_save.php?action=login", 606 data: formData, 607 cache: false, 608 contentType: false, 609 processData: false, 610 success: function(msg) { 611 console.log(msg); 612 if (msg == 'login_error') 613 { 614 swal('ç»å ¥å¤±æ, è«éæ°ç¢ºèª.', '', 'warning'); 615 return false; 616 } 617 if(msg == 'no_account') { 618 swal('æ¤å¸³èæªè¨»åéï¼è«éæ°ç¢ºèªã', '', 'error'); 619 return false; 620 } 621 if (msg == 'login_success') 622 { 623 swal('ç»å ¥æå', '', 'success').then(function() { 624 location.href= document.referrer; 625 }); 626 } 627 if (msg == 'login_success_need_profile') 628 { 629 // ç»å ¥æåï¼ä½åäººè³æå°æªå¡«å¯«å®æ´ 630 // å å²å便ºé å° intent 表ï¼å帶使ç¨è åå¾è£å¡«è³æé 631 (async function() { 632 var ref = document.referrer; 633 var returnUrl = (ref && new URL(ref).hostname === window.location.hostname) ? ref : '/tw/index.html'; 634 var result = await swal({ 635 title : 'ç»å ¥æå', 636 html : 'æ¨çåäººè³æå°æªå¡«å¯«å®æ´ï¼<br>è«å è£è¶³å¾æè½ç¹¼çºè³¼è²·èª²ç¨ã', 637 type : 'warning', 638 showCancelButton : true, 639 confirmButtonText : 'åå¾å¡«å¯«', 640 cancelButtonText : 'ç¨å¾å說', 641 confirmButtonColor : '#3085d6', 642 cancelButtonColor : '#aaa', 643 }).catch(swal.noop); 644 if (result) { 645 $.ajax({
646 url : '/course/save.php', 647 method : 'POST', 648 data : { 649 action : 'intent', 650 arg1 : 'login', 651 arg2 : '', 652 from : 'login', 653 link : returnUrl 654 }, 655 dataType : 'json', 656 complete : function() { 657 location.href = '/tw/mem/complete_profile'; 658 } 659 }); 660 } else { 661 location.href = returnUrl; 662 } 663 })(); 664 } 665 if (msg == 'invalid_request') 666 { 667 swal('Invalid request.', '', 'error').then(function() { 668 location.reload(); 669 }); 670 } 671 }, 672 error: function(){ 673 alert("failure"); 674 } 675 }); 676 }); 677 }); 678} 679// ææ©é©è碼 680async function send_mobile_verify(e) { 681 e.preventDefault(); 682 683 const phoneValue = $('#phone').val().trim(); 684 // å°ç£ææ©èç¢¼æ ¼å¼æª¢æ¥ï¼09éé ï¼ç¸½å ±10使¸ 685 const phoneRegex = /^09[0-9]{8}$/; 686 if (!phoneRegex.test(phoneValue)) { 687 swal('è«è¼¸å ¥æ£ç¢ºçå°ç£ææ©è碼ï¼09éé ï¼å ±10使¸åï¼', '', 'error'); 688 return; 689 } 690 691 // 黿å¾ç«å³ç¦ç¨æéï¼é²æ¢éè¤é»æ 692 $('#send_verify').off('click'); 693 const originalHtml = $('#send_verify').html(); 694 $('#send_verify').replaceWith(`<span id="send_verify" style="color: #999; cursor: not-allowed; text-decoration: none;">ç¼éä¸...</span>`); 695 696 try { 697 const res = await $.ajax({
698 url : '/mem/save.php?action=send_mobile_verify_code', 699 type : 'POST', 700 data : { phone: phoneValue, mode: 'login' }, 701 dataType: 'json' 702 }); 703 await swal('é©è碼已ç¼éè³æ¨çææ©ï¼è«æ³¨ææ¥æ¶ï¼', '', 'success').catch( error => swal.dismiss); 704 705 // åªæå¨æåç¼é徿éå§åæ¸è¨æ 706 if (res.status === 'success') { 707 startCountdown(originalHtml); 708 // è®ææ©èç¢¼è¼¸å ¥æ¡ä¸å¯ç·¨è¼¯ 709 $('#phone').prop('readonly', true).addClass('disabled-input'); 710 } else { 711 // ç¼é失æï¼æ¢å¾©æé 712 $('#send_verify').replaceWith(`<a href="#" class="send-btn-link" id="send_verify">${originalHtml}</a>`); 713 $('#send_verify').on('click', send_mobile_verify); 714 } 715 } catch (error) { 716 let err_data = error.responseJSON ?? {message: '系統é¯èª¤ï¼è«éæ°æä½', status: 'error' }; 717 await swal(err_data.message, '', err_data.status).catch( error => swal.dismiss); 718 // ç¼é失æï¼æ¢å¾©æé 719 $('#send_verify').replaceWith(`<a href="#" class="send-btn-link" id="send_verify">${originalHtml}</a>`); 720 $('#send_verify').on('click', send_mobile_verify); 721 } 722} 723function startCountdown(originalHtml) { 724 // è¨å®åæ¸è¨æ 725 let countdown = 120; 726 $('#send_verify').html(`éæ°ç¼é(120s)`); 727 728 const interval = setInterval(() => { 729 if (countdown <= 0) { 730 clearInterval(interval); 731 // æ¢å¾©çºåä¾çæé 732 $('#send_verify').replaceWith(`<a href="#" class="send-btn-link" id="send_verify">${originalHtml}</a>`); 733 $('#send_verify').on('click', send_mobile_verify); 734 // æ¢å¾©ææ©èç¢¼è¼¸å ¥æ¡å¯ç·¨è¼¯ 735 $('#phone').prop('readonly', false).removeClass('disabled-input'); 736 } else { 737 $('#send_verify').html(`éæ°ç¼é(${countdown}s)`); 738 countdown--; 739 } 740 }, 1000); 741 } 742</script>
742 743 744</body> 745</html> <div class="dis_no_pc dis_blo_md"> 746 </div> 747 <div class="clearfix"></div> 748<footer id="footer-pro" class="footer-listlay"> 749 <div class="container"> 750 <div class="row"> 751 <div class="col-12 col-md-6 col-lg-4 col-xl-3"> 752 <p class="foot-logo"><img src="/images/logo_footer.svg" alt="GOGO CARE" width="100%" /> 753 <!--<br /> 754 <h5>è¿½è¹¤åæ </h5> 755 <ul class="social-icons-pro" style="text-align: left;"> 756 <li class="facebook-color"><a href="#" target="_blank"><i class="fab fa-facebook-f"></i></a></li> 757 <li class="youtube-color"><a href="#" target="_blank"><i class="fab fa-youtube"></i></a></li> 758 </ul>--> 759 </div> 760 <div class="col-12 col-md-6 col-lg-4 col-xl-2 m-ta-center"> 761 <h5>éæ¼æå</h5> 762 <ul class="foot_list row"> 763 <li class="col-6 col-md-6 col-lg-12 col-xl-12 pl-0"><a href="/tw/about.html" title="éæ¼æå">éæ¼æå</a></li> 764 <li class="col-6 col-md-6 col-lg-12 col-xl-12 pl-0"><a href="/tw/article.html" title="é±è®å¥½æ">é±è®å¥½æ</a></li> 765 <li class="col-6 col-md-6 col-lg-12 col-xl-12 pl-0"><a href="/tw/events.html" title="ææ°æ´»å">ææ°æ´»å</a></li> 766 </ul> 767 <br /> 768 <h5>å¸å¡èº«å</h5> 769 <ul class="foot_list row"> 770 <li class="col-6 col-md-6 col-lg-12 col-xl-12 pl-0"><a href="/tw/mem/login" title="ææ³ä¸èª²">ææ³ä¸èª²</a></li> 771 <!-- <li class="col-6 col-md-6 col-lg-12 col-xl-12 pl-0"><a href="/tw/help.html" title="幫å©ä¸å¿">幫å©ä¸å¿</a></li> --> 772 </ul> 773 </div> 774 <div class="col-12 col-md-6 col-lg-4 col-xl-2 m-ta-center"> 775 <h5>伿¥èº«å</h5> 776 <ul class="foot_list row"> 777 <li class="col-6 col-md-6 col-lg-12 col-xl-12 pl-0"><a href="/tw/bebusiness.html" title="å å ¥GOGO CARE">å å ¥GOGO CARE</a></li> 778 <!-- <li class="col-6 col-md-6 col-lg-12 col-xl-12 pl-0"><a href="/tw/help.html" title="幫å©ä¸å¿">幫å©ä¸å¿</a></li> --> 779 </ul> 780 <br /> 781 <h5>æå¸«èº«å</h5> 782 <ul class="foot_list row"> 783 <li class="col-6 col-md-6 col-lg-12 col-xl-12 pl-0"><a href="/tw/teach/apply_teach" title="ææ³ä¸èª²">ææ³é課</a></li> 784 <!-- <li class="col-6 col-md-6 col-lg-12 col-xl-12 pl-0"><a href="/tw/help.html" title="幫å©ä¸å¿">幫å©ä¸å¿</a></li> --> 785 </ul> 786 </div> 787 <div class="col-12 col-md-6 col-lg-4 col-xl-2 m-ta-center"> 788 <h5>幫å©</h5> 789 <ul class="foot_list row"> 790 <!-- <li class="col-6 col-md-6 col-lg-12 col-xl-12 pl-0"><a href="/tw/alliance.html" title="ç°æ¥å使´½è«">ç°æ¥å使´½è«</a></li> --> 791 <li class="col-6 col-md-6 col-lg-12 col-xl-12 pl-0"><a href="/tw/help.html" title="常è¦åç">常è¦åç</a></li> 792 <li class="col-6 col-md-6 col-lg-12 col-xl-12 pl-0"><a href="/tw/c_service.html" title="æåå¥ç´">æåå¥ç´</a></li> 793 <li class="col-6 col-md-6 col-lg-12 col-xl-12 pl-0"><a href="/tw/c_copyright.html" title="é±ç§æ¬æ¿ç">é±ç§æ¬æ¿ç</a></li> 794 <li class="col-6 col-md-6 col-lg-12 col-xl-12 pl-0"><a href="/tw/c_terms.html" title="使ç¨è æ¢æ¬¾">使ç¨è æ¢æ¬¾</a></li> 795 <!-- <li class="col-6 col-md-6 col-lg-12 col-xl-12 pl-0"><a href="/tw/bebusiness.html" title="伿¥ç³è«å å ¥ GOGO ç §è·">伿¥ç³è«å å ¥ GOGO ç §è·</a></li> --> 796 </ul> 797 </div> 798 <div class="col-12 col-md-6 col-lg-4 col-xl-3 m-ta-center"> 799 <h5>客ææé</h5> 800 <ul class="foot_list row"> 801 <li class="col-lg-12 col-xl-12 pl-0" style="color: #ffffff; letter-spacing: 0; border-right: 0px;">é±ä¸è³é±äºï¼å æ¥èä¾åæ¥å ¬ä¼ï¼<br />08ï¼30è³12ï¼00<br />13ï¼00è³17ï¼30</li> 802 </ul> 803 <!--<h5>客æä¿¡ç®±</h5> 804 <ul class="foot_list row"> 805 <li class="col-lg-12 col-xl-12 pl-0" style="border-right: 0px;"><a href="mailto:[email protected]?subject=GoGoCareè©¢å" title="客æä¿¡ç®±">[email protected]</a></li> 806 </ul>--> 807 <h5>LINEç·ä¸å®¢æ</h5> 808 <ul class="foot_list row"> 809 <li class="col-lg-12 col-xl-12 pl-0" style="border-right: 0px;"> 810 <div class="line-it-button" data-lang="zh_Hant" data-type="friend" data-lineId="@966jrytj" style="display: none;"></div> 811 <a style="display:block;" id="line_friend" href="javascript:" title="LINEç·ä¸å®¢æ"> 812 <img src="/images/ttvideo_QRcode.jpg" alt="GOGO CARE Line ç·ä¸å®¢æ" style="max-width: 100%; width: 150px;" /> 813 </a> 814 </li> 815 </ul> 816 817 </div> 818 </div> 819 </div> 820</footer> 821<footer id="footer-pro"> 822 <div class="container"> 823 <div class="row"> 824 <div class="col-md"> 825 <div class="copyright-text-pro">© ç¥å¤æç§æè¡ä»½æéå ¬å¸ çæ¬ææï½å°ä¸å¸çæ¥åçæ¥éæ°èè·¯136è1æ¨ï½çµ±ä¸ç·¨èï¼90598296 <span class="seo"><a href="https://www.ls-design.com.tw/" title="é¾å¿æ¸ä½ç§æ" target="_blank" rel="noopener">Design by é¾å¿æ¸ä½ç§æ</a></span></div> 826 </div> 827 </div><!-- close .row --> 828 </div> 829</footer> 830<a href="#0" id="pro-scroll-top"><i class="fas fa-chevron-up"></i></a> 831 832</div><!-- close #sidebar-bg--> 833<div class="m_footer_nav"> 834 <div class="toolbar-inner menubar-nav" style="display: inline-flex; width: 100%; text-align: center;"> 835 <a href="/tw/course/list.html" class="normal-item-pro nav-link "> 836 <img class="nav_img nav_3" src="/images/icon/nav_3.svg" alt="ææèª²ç¨" style="width: 20p
836x !important; padding-bottom: 6px !important;" /><br /> 837 <span>ææèª²ç¨</span> 838 </a> 839 <a href="/tw/events.html" class="normal-item-pro nav-link "> 840 <img class="nav_img nav_6" src="/images/icon/nav_6.svg" alt="ææ°æ´»å" style="width: 20px !important; padding-bottom: 6px !important;" /><br /> 841 <span>ææ°æ´»å</span> 842 </a> 843 <a href="/tw/help.html" class="normal-item-pro nav-link "> 844 <img class="nav_img nav_8" src="/images/icon/nav_8.svg" alt="常è¦åç" style="width: 20px !important; padding-bottom: 6px !important;" /><br /> 845 <span>常è¦åç</span> 846 </a> 847 <a href="/tw/question.html" class="normal-item-pro nav-link "> 848 <img class="nav_img nav_q" src="/images/icon/question.svg" alt="æè¦æå" style="width: 20px !important; padding-bottom: 6px !important;" /><br /> 849 <span>æè¦æå</span> 850 </a> 851 </div> 852</div> 853<!-- Modal --> 854<div class="modal fade" id="LoginModal" tabindex="-1" role="dialog" aria-labelledby="LoginModal" aria-hidden="true"> 855 <button type="button" class="close float-close-pro" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button> 856 <div class="modal-dialog modal-dialog-centered modal-md" role="document"> 857 <div class="modal-content"> 858 <div class="modal-header-pro"> 859 <h2>å¾é«èä½ åä¾GOGO CAREï¼</h2> 860 </div> 861 <div class="modal-body-pro social-login-modal-body-pro"> 862 863 <div class="registration-social-login-container"> 864 <form id="login_form" name="login_form" method="post" onSubmit="getToken('login_form', event)"> 865 <div class="form-group"> 866 <input type="email" class="form-control" id="login_account" name="login_account" placeholder="é»åéµä»¶" required> 867 </div> 868 <div class="form-group"> 869 <input type="password" class="form-control" id="login_password" name="login_password" placeholder="å¯ç¢¼" required> 870 </div> 871 <div class="form-group"> 872 <button type="submit" class="btn btn-green-pro btn-display-block">å¸å¡ç»å ¥</button> 873 </div> 874 <div class="container-fluid"> 875 <div class="row no-gutters"> 876 <!--<div class="col checkbox-remember-pro"><input type="checkbox" id="checkbox-remember"><label for="checkbox-remember" class="col-form-label">Remember me</label></div>--> 877 <div class="col forgot-your-password"><a href="/tw/forgetpassword.html" title="å¿è¨å¯ç¢¼">å¿è¨å¯ç¢¼?</a></div> 878 </div> 879 </div><!-- close .container-fluid --> 880 881 </form> 882 883 <div class="registration-social-login-or">æ</div> 884 885 </div><!-- close .registration-social-login-container --> 886 887 <div class="registration-social-login-options"> 888 <h6>使ç¨ç¤¾ç¾¤å¸³èç¹¼çº</h6> 889 <a href="javascript:" onclick="google_api('mem', '');" title="ä½¿ç¨ Google ç»å ¥"><div class="social-icon-login google-color"><i class="fab fa-google"></i> ä½¿ç¨ Google ç»å ¥</div></a> 890 <a href="#" title="伿¥ç¨æ¶ç»å ¥"><div class="social-icon-login facebook-color">伿¥ç¨æ¶ç»å ¥</div></a> 891 <a href="/tw/teach/login" title="æå¸«ç»å ¥"><div class="social-icon-login twitter-color">æå¸«ç»å ¥</div></a> 892 </div><!-- close .registration-social-login-options --> 893 894 <div class="clearfix"></div> 895 896 </div><!-- close .modal-body --> 897 898 <a class="not-a-member-pro" href="/tw/signup.html">䏿¯æå¡?<span>ç«å³å å ¥è·äººé!</span></a> 899 </div><!-- close .modal-content --> 900 </div><!-- close .modal-dialog --> 901</div><!-- close .modal -->
902<script src="https://d.line-scdn.net/r/web/social-plugin/js/thirdparty/loader.min.js" async="async" defer="defer"></script>
902
903<script> 904let isadding = false; 905 906function getToken(fname, event) 907{ 908 event.preventDefault(); 909 910 var login_account = $('#login_account').val(); 911 var login_password = $('#login_password').val(); 912 913 if (IsEmail(login_account) == 0) 914 { 915 swal('é»åéµä»¶æ ¼å¼æèª¤, è«éæ°ç¢ºèª.', '', 'error'); 916 return true; 917 } 918 919 if (login_password == '') 920 { 921 swal('è«å¡«å¯«å¯ç¢¼.', '', 'error'); 922 return true; 923 } 924 925 grecaptcha.ready(function() { 926 grecaptcha.execute('6LfOSpYiAAAAAL3PIBUBT9gis1j7y43K0g84b2BG', { action: 'login_form' }).then(function(token) { 927 928 var button = document.createElement('input'); 929 button.type = 'hidden'; 930 button.name = 'recaptcha_token'; 931 button.id = 'recaptcha_token'; 932 button.value = token; 933 934 var form = document.getElementById(fname); 935 form.appendChild(button); 936 937 var formData = new FormData($("#"+fname)[0]); 938 939 $.ajax({ 940 type: "POST", 941 url: "/member_save.php?action=login", 942 data: formData, 943 cache: false, 944 contentType: false, 945 processData: false, 946 success: function(msg) { 947 console.log(msg); 948 if (msg == 'login_error') 949 { 950 swal('ç»å ¥å¤±æ, è«éæ°ç¢ºèª.', '', 'warning'); 951 return true; 952 } 953 954 if (msg == 'login_success') 955 { 956 swal('ç»å ¥æå.', '', 'success'); 957 958 setTimeout(function () { 959 location.href= '/tw/mem/profile'; 960 }, 1000); 961 } 962 963 if (msg == 'invalid_request') 964 { 965 swal('Invalid request.', '', 'error'); 966 } 967 }, 968 error: function(){ 969 alert("failure"); 970 } 971 }); 972 973 }); 974 }); 975} 976 977function google_api(api_type, api_login_id) 978{ 979 location.href = "https://accounts.google.com/o/oauth2/auth?response_type=code&redirect_uri=https://www.gogocare.com.tw/callback.php?login_status="+api_type+"&client_id=39308485116-mofti3v7d8varrc7p5jsml41b8eodr7r.apps.googleusercontent.com&scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fuserinfo.profile+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fuserinfo.email&access_type=offline&approval_prompt=force&state="+api_login_id; 980} 981 982function line_api(api_type, api_login_id = '') { 983 const client_id = '2006013063'; 984 const redirect_uri = encodeURIComponent('https://www.gogocare.com.tw/callback.php?login_type=line'); 985 const state = encodeURIComponent(`${api_type}_${api_login_id}`); 986 const scope = encodeURIComponent('openid profile email'); 987 988 const link = `https://access.line.me/oauth2/v2.1/authorize?response_type=code&client_id=${client_id}&redirect_uri=${redirect_uri}&state=${state}&scope=${scope}`; 989 990 window.location.href = link; 991} 992function line_friend(api_type) { 993 let client_id = '2006013063'; 994 let redirect_uri = encodeURIComponent('https://www.gogocare.com.tw/callback.php?login_type=line'); 995 let link = 'https://access.line.me/oauth2/v2.1/authorize?'; 996 link += 'response_type=code'; 997 link += '&client_id=' + client_id; 998 link += '&redirect_uri=' + redirect_uri; 999 link += '&state=' + api_type; 1000 link += '&scope=profile'; 1001 window.open(link, '_blank'); 1002} 1003 1004 1005async function add_course(course_id) 1006{ 1007 // 表å®éåºé²å 1008 if (isadding) { 1009 return false; 1010 } 1011 isadding = true; 1012 1013 var login_id = ''; 1014 1015 if (course_id == '') { 1016 isadding = false; 1017 swal('å å ¥å¤±æ, è«éæ°ç¢ºèª.', '', 'warning'); 1018 return true; 1019 } 1020 1021 if (login_id == '') { 1022 isadding = false; 1023 swal('è«å é²è¡ç»å ¥.', '', 'warning').then(function() { 1024 location.href = '/tw/mem/login'; 1025 }); 1026 1027 return true; 1028 } 1029 1030 try { 1031 let res = await $.ajax({
1032 type: 'POST', 1033 url : '/course/save.php?action=add', 1034 dataType: 'JSON', 1035 cache: false, 1036 data : { 1037 course_id, 1038 login_id 1039 } 1040 }) 1041 await swal(res.message, '', res.status); 1042 window.location.reload(); 1043 } catch (error) { 1044 let err_data = error.responseJSON ? error.responseJSON : {status: 'error', message: '系統é¯èª¤ï¼è«ç¨å¾å試'}; 1045 console.table(error); 1046 swal(err_data.message, '', err_data.status); 1047 } finally { 1048 isadding = false; 1049 } 1050} 1051 1052async function add_event(event_id) 1053{ 1054 var login_id = ''; 1055 1056 if (event_id == '' && true) { 1057 swal('å å ¥å¤±æ, è«éæ°ç¢ºèª.', '', 'warning'); 1058 return true; 1059 } 1060 1061 if (login_id == '') { 1062 swal('è«å é²è¡ç»å ¥.', '', 'warning').then(function() { 1063 location.href = '/tw/mem/login'; 1064 }); 1065 1066 return true; 1067 } 1068 1069 try { 1070 let res = await $.ajax({ 1071 type: 'POST', 1072 url : '/event/save.php?action=add_event', 1073 dataType: 'JSON', 1074 cache: false, 1075 data : { 1076 event_id, 1077 login_id 1078 } 1079 }) 1080 await swal(res.message, '', res.status); 1081 window.location.reload(); 1082 }catch (error) { 1083 let err_data = error.responseJSON ? error.responseJSON : {status: 'error', message: '系統é¯èª¤ï¼è«ç¨å¾å試'}; 1084 console.table(error); 1085 swal(err_data.message, '', err_data.status); 1086 } 1087} 1088 1089function add_course2(course_id, course_point) 1090{ 1091 var login_id = ''; 1092 var login_type = ''; 1093 1094 if (course_id == '') 1095 { 1096 swal('å å ¥å¤±æ, è«éæ°ç¢ºèª.', '', 'warning'); 1097 return true; 1098 } 1099 1100 if (login_id == '') 1101 { 1102 swal('è«å é²è¡ç»å ¥.', '', 'warning').then(function() { 1103 location.href = '/tw/mem/login'; 1104 }); 1105 1106 return true; 1107 } 1108 1109 swal({ 1110 title: '確èªå å ¥ï¼å°æ£é¤ '+course_point+' é»', 1111 type: 'warning', 1112 showCancelButton: true, 1113 confirmButtonColor: '#3085d6', 1114 cancelButtonColor: '#d33', 1115 cancelButtonText: 'åæ¶', 1116 confirmButtonText: '確å®', 1117 }).then(function() { 1118 1119 $.ajax({ 1120 type: "GET", 1121 url: "/course_save.php?action=add2&course_id="+course_id, 1122 data: "html", 1123 success: function(msg) { 1124 1125 if (msg == 'offline') { 1126 swal('課ç¨å·²ä¸æ¶ï¼', '', 'warning') 1127 .then(res=> { 1128 window.location.href= '/'; 1129 }); 1130 return true; 1131 } 1132 1133 if (msg == 'not_enough') 1134 { 1135 swal('黿¸ä¸è¶³.', '', 'warning'); 1136 } 1137 1138 if (msg == 'role_error') 1139 { 1140 swal('å¸å¡è§è²æè½è³¼è²·', '', 'warning'); 1141 } 1142 1143 if (msg == 'success') 1144 { 1145 swal('å å ¥å®æ.', '', 'success'); 1146 1147 setTimeout(function () { 1148 location.href = '/tw/lesson_detail/'+course_id; 1149 }, 1000); 1150 } 1151 1152 if (msg == 'added') 1153 { 1154 swal('該課ç¨å·²å å ¥éå¸ç¿èª²è¡¨.', '', 'warning'); 1155 return true; 1156 } 1157 }, 1158 error: function(){ 1159 alert("failure"); 1160 } 1161 }); 1162 }) 1163} 1164 1165function add_live_course(course_id, course_point) { 1166 1167} 1168 1169function add_package(package_id, course_point) 1170{ 1171 var login_id = ''; 1172 var login_type = ''; 1173 1174 if (package_id == '') 1175 { 1176 swal('å å ¥å¤±æ, è«éæ°ç¢ºèª.', '', 'warning'); 1177 return true; 1178 } 1179 1180 if (login_id == '') 1181 { 1182 swal('è«å é²è¡ç»å ¥.', '', 'warning').then(function() { 1183 location.href = '/tw/mem/login'; 1184 }); 1185 1186 return true; 1187 } 1188 1189 swal({ 1190 title: '確èªè³¼è²·ï¼å°æ£é¤ '+course_point+' é»', 1191 type: 'warning', 1192 showCancelButton: true, 1193 confirmButtonColor: '#3085d6', 1194 cancelButtonColor: '#d33', 1195 cancelButtonText: 'åæ¶', 1196 confirmButtonText: '確å®', 1197 }).then(function() { 1198 1199 $.ajax({ 1200 type: "GET", 1201 url: "/package_save.php?action=add&package_id="+package_id, 1202 data: "html", 1203 success: function(msg) { 1204 if (msg == 'not_enough') 1205 { 1206 swal('黿¸ä¸è¶³.', '', 'warning'); 1207 } 1208 1209 if (msg == 'role_error') 1210 { 1211 swal('å¸å¡è§è²æè½è³¼è²·', '', 'warning'); 1212 } 1213 1214 if (msg == 'success') 1215 { 1216 swal('è³¼è²·å®æ.', '', 'success'); 1217 1218 setTimeout(function () { 1219 location.href = '/tw/package_detail/'+package_id; 1220 }, 1000); 1221 } 1222 1223 if (msg == 'added') 1224 { 1225 swal('該å¸ç¿å¥é¤å·²è³¼è²·é.', '', 'warning'); 1226 return true; 1227 } 1228 }, 1229 error: function(){ 1230 alert("failure"); 1231 } 1232 }); 1233 }); 1234} 1235 1236// OTPæéåè½ - æ°¸é è¼å ¥ï¼ç¢ºä¿æéå¯ç¨ 1237$(function () { 1238 const $wrap = $("#rb_otp"); 1239 const $btn = $("#fabBtn"); 1240 const $panel = $("#fabPanel");
1241 const $overlay = $("#fabOverlay"); 1242 const $close = $("#fabClose"); 1243 1244 function openPanel() { 1245 $wrap.addClass("is-open"); 1246 $panel.css("display", "block"); 1247 } 1248 1249 function closePanel() { 1250 $wrap.removeClass("is-open"); 1251 $panel.css("display", "none"); 1252 } 1253 1254 $btn.on("click", function (e) { 1255 e.stopPropagation(); 1256 $wrap.hasClass("is-open") ? closePanel() : openPanel(); 1257 }); 1258 1259 $close.on("click", closePanel); 1260 $overlay.on("click", closePanel); 1261 1262 // ESC éé 1263 $(document).on("keydown", function (e) { 1264 if (e.key === "Escape") closePanel(); 1265 }); 1266}); 1267 1268 1269</script>
1269 <!-- Required Framework JavaScript --> 1270<!--
1270<script src="/js/libs/jquery-3.3.1.min.js"></script>
1270jQuery -->
1271<script src="/js/libs/popper.min.js" defer></script>
1271<!-- Bootstrap Popper/Extras JS -->
1272<script src="/js/libs/bootstrap.min.js" defer></script>
1272<!-- Bootstrap Main JS --> 1273<!-- All JavaScript in Footer --> 1274 1275<!-- Additional Plugins and JavaScript -->
1276<script src="/js/navigation.js" defer></script>
1276<!-- Header Navigation JS Plugin -->
1277<script src="/js/jquery.flexslider-min.js" defer></script>
1277<!-- FlexSlider JS Plugin -->
1278<script src="/js/jquery-asRange.min.js" defer></script>
1278<!-- Range Slider JS Plugin -->
1279<script src="/js/circle-progress.min.js" defer></script>
1279<!-- Circle Progress JS Plugin -->
1280<script src="/js/afterglow.min.js" defer></script>
1280<!-- Video Player JS Plugin -->
1281<script src="/js/script.js" defer></script>
1281<!-- Custom Document Ready JS -->
1282<script src="/js/script-dashboard.js" defer></script>
1282<!-- Custom Document Ready for Dashboard Only JS --> 1283 1284
1285<script src="/js/bs-stepper.min.js"></script>
1285
1286<script src="https://cdnjs.cloudflare.com/ajax/libs/1000hz-bootstrap-validator/0.11.9/validator.js" type="text/javascript"></script>
1286
1287<script> 1288$(document).ready(function() { 1289 1290 $("#keyword").autocomplete({ 1291 source: async function (req,res) { 1292 1293 const data = await get_suggest(req.term) 1294 if (!data.data.length) { 1295 return res([{result: '404', name: 'ç¡ç¸éééµå'}]) 1296 } 1297 res(data.data) 1298 }, 1299 minLength: 2, 1300 select: function(event, ui) { 1301 if(ui.item.result === '404') return; 1302 window.location.href =`/tw/course/detail/${ui.item.course_id}`; 1303 }, 1304 create: function() { 1305 $(this).autocomplete("instance")._renderItem = function(ul, item) { 1306 if(item.result == '404') { 1307 return $("<li>") 1308 .append("<div class='no-results text-center'>" + item.name + "</div>") 1309 .appendTo(ul); 1310 } 1311 return $("<li>") 1312 .append( 1313 `<div class='autocomplete-item'> 1314 <img src='/includes/TimThumb.php?src=/UserFiles/course/${item.course_pic}&w=120&h=80&zc=1' alt='${item.course_name} width='80' height='80'> 1315 <span>${item.course_name}</span> 1316 </div>` 1317 ) 1318 .appendTo(ul); 1319 }; 1320 } 1321 }); 1322 1323 $(document).on('click', '#password_show', function() { 1324 let passwordField = $(this).closest('.input-group').find('input[type="password"], input[type="text"]'); 1325 // åæå¯ç¢¼é¡¯ç¤ºæé±è 1326 if (passwordField.attr('type') === 'password') { 1327 passwordField.attr('type', 'text'); // 顯示å¯ç¢¼ 1328 $(this).find('i').removeClass('fa-eye-slash').addClass('fa-eye'); 1329 } else { 1330 passwordField.attr('type', 'password'); // é±èå¯ç¢¼ 1331 $(this).find('i').removeClass('fa-eye').addClass('fa-eye-slash'); 1332 } 1333 }) 1334}); 1335 1336async function get_suggest (query) { 1337 try { 1338 const data = await $.ajax({
1339 url : '/course_save.php?action=get_suggest', 1340 method : 'GET', 1341 dataType: 'JSON', 1342 data: { 1343 srh_key_word : query 1344 } 1345 }) 1346 console.log(data) 1347 return data; 1348 } catch (error) { 1349 console.error(error) 1350 return []; 1351 } 1352} 1353var createPopupWin = function(sType, pageURL, pageTitle, popupWinWidth, popupWinHeight) 1354{ 1355 var url = encodeURIComponent(pageURL); 1356 1357 if (sType == 'Mail') 1358 { 1359 location.href = 'mailto:?body='+url; 1360 } 1361 else 1362 { 1363 if (sType == 'LINE') url = 'https://social-plugins.line.me/lineit/share?url='+url; 1364 if (sType == 'Facebook') url = 'http://www.facebook.com/sharer.php?u='+url; 1365 1366 var left = (screen.width - popupWinWidth) / 2; 1367 var top = (screen.height - popupWinHeight) / 4; 1368 1369 var myWindow = window.open(url, pageTitle, 1370 'resizable=yes, width=' + popupWinWidth 1371 + ', height=' + popupWinHeight + ', top=' 1372 + top + ', left=' + left); 1373 } 1374 1375}; 1376 1377// For è¤è£½é£çµ 1378var copyLinks = function(pdfURL) { 1379 1380 var $temp = $("<input>"); 1381 1382 $("body").append($temp); 1383 $temp.val(pdfURL).select(); 1384 document.execCommand("copy"); 1385 $temp.remove(); 1386 swal("è¤è£½æå!", '', 'success'); 1387}; 1388 1389/* 夿·é»éµå°åæ ¼å¼ */ 1390function IsEmail(email) 1391{ 1392 var emailRule = /^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z]+$/; 1393 1394 if (email.search(emailRule)!= -1) 1395 { 1396 return 1; 1397 } 1398 else 1399 { 1400 return 0; 1401 } 1402} 1403 1404async function chg_collect(tab_id, tab, element) { 1405 1406 try { 1407 let res = await $.ajax({
1408 url : '/course_save.php?action=change_collect', 1409 method : 'POST', 1410 dataType: 'JSON', 1411 data: { 1412 tab_id, 1413 tab 1414 } 1415 }) 1416 $(element).removeAttr('style').html('') 1417 if (res.type == 'del') { 1418 $(element).html('å å ¥æ¶è') 1419 } else { 1420 $(element).attr('style', 'background-color:#dc3545;color:white;').html('åæ¶æ¶è') 1421 } 1422 if (typeof change_list === 'function') { 1423 await change_list(); 1424 } 1425 } catch (error) { 1426 let err_data = error.responseJSON; 1427 switch(error.status){ 1428 case 401: 1429 await swal('é²è¡æ¶èåï¼è«å ç»å ¥æå¡ï¼è¬è¬ã','', 'error'); 1430 window.location.href = '/tw/mem/login' 1431 break; 1432 } 1433 console.error(error) 1434 } 1435} 1436 1437// çæ stepper 1438function generate_stepper(id, linear = true) { 1439 const node = $(`#${id}`); 1440 const stepper = new Stepper(node[0], { 1441 linear, 1442 animation: true 1443 }); 1444 return stepper; 1445} 1446 1447// è¦ç« ç¨ éå¶å¿ é å¾é¸æè½ç¹¼çº 1448function enableNextOnScroll(container, checkboxId) { 1449 console.log('scroll!') 1450 let scrollTop = container[0].scrollTop; 1451 let clientHeight = container[0].clientHeight; 1452 let nowPosition = container[0].scrollHeight; 1453 let limit = 0.7; 1454 if (scrollTop + clientHeight >= nowPosition * limit) { 1455 $(checkboxId).html('æå·²é±è®ä¸¦åæä»¥ä¸å §å®¹').prop('disabled', false); 1456 } 1457 return false; 1458} 1459 1460document.addEventListener("DOMContentLoaded", function () { 1461 tag_generator(); 1462}); 1463 1464function tag_generator() { 1465 console.log('start') 1466 document.querySelectorAll('.tag-wrapper').forEach(wrapper => { 1467 console.log('here') 1468 const tagList = wrapper.querySelector('.tag-list'); 1469 const tags = tagList.querySelectorAll('li'); 1470 // å徿æli çå §å®¹ 1471 tag_list = Array.from(tags).map(tag => tag.textContent.trim()); 1472 if (tags.length > 2) { 1473 // åªé¤è¶ é2åçli
1474 tags.forEach((tag, i) => { 1475 if (i >= 2) tag.style.display = 'none'; 1476 }); 1477 1478 // â çºæ¯å tag-list æ°å»ºä¸å toggleBtn 1479 const toggleBtn = document.createElement('li'); 1480 toggleBtn.className = 'more-toggle'; 1481 toggleBtn.textContent = '... æ´å¤'; 1482 toggleBtn.style.border = '#ccc 2px solid'; 1483 toggleBtn.style.background = '#f8f9fa'; 1484 tagList.appendChild(toggleBtn); 1485 1486 toggleBtn.addEventListener('click', () => { 1487 const expanded = tagList.classList.toggle('expanded'); 1488 tags.forEach((tag, i) => { 1489 if (i >= 2) tag.style.display = expanded ? '' : 'none'; 1490 }); 1491 toggleBtn.textContent = expanded ? 'æ¶èµ· â²' : '... æ´å¤'; 1492 }); 1493 } 1494 }); 1495} 1496</script>
1496 <link rel="stylesheet" href="/js/fullcalendar/packages/core/main.css"> 1497<link rel="stylesheet" href="/css/bs-stepper.min.css">
1498<script src='/js/fullcalendar/packages/core/main.js'></script>
1498
1499<script src='/js/fullcalendar/packages/interaction/main.js'></script>
1499
1500<script src='/js/fullcalendar/packages/daygrid/main.js'></script>
1500 1501
1502<script lang="javaScript"> 1503 // $(document).ready(function() { 1504 1505 // }); 1506 // åå¾ç¸£å¸ 1507 function get_dist() { 1508 return new Promise(function(resolve, reject) { 1509 $.ajax({ 1510 url:'/mem/save.php?action=get_dist', 1511 method:'GET', 1512 dataType:'JSON' 1513 }) 1514 .then(res => { 1515 resolve(res); 1516 }) 1517 .catch(err => { 1518 reject(err.responseText); 1519 }); 1520 }); 1521 } 1522 1523 // åå¾å°å 1524 function get_area(city) { 1525 return new Promise(function (resolve, reject) { 1526 $.ajax({ 1527 url: '/mem/save.php?action=get_area&city=' + city, 1528 method: 'GET', 1529 dataType: 'JSON' 1530 }) 1531 .then(response => { 1532 resolve(response); 1533 }) 1534 .catch(error => { 1535 reject(error.responseText); 1536 }); 1537 }); 1538 } 1539 1540 // åå¾èº«å 1541 function get_job() { 1542 return new Promise(function( resolve, reject) { 1543 $.ajax({
1544 url : '/mem/save.php?action=get_job', 1545 method : 'GET', 1546 dataType : 'JSON', 1547 }) 1548 .then(response => { 1549 resolve(response) 1550 }) 1551 .catch(error => { 1552 reject(error.responseText) 1553 }) 1554 }) 1555 } 1556 function isValidFileType(fileType) { 1557 let allowedTypes = ['image/jpeg', 'image/png']; 1558 return allowedTypes.includes(fileType); 1559 } 1560</script>
1560 1561 </body> 1562</html> 1563
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.