{"id":2737,"date":"2024-01-16T18:13:14","date_gmt":"2024-01-16T11:13:14","guid":{"rendered":"http:\/\/cpanel.jblstore.co.id\/?page_id=2737"},"modified":"2025-11-26T17:46:19","modified_gmt":"2025-11-26T10:46:19","slug":"forgot-password","status":"publish","type":"page","link":"https:\/\/jblstore.co.id\/en\/forgot-password\/","title":{"rendered":"Forgot Password"},"content":{"rendered":"<div data-elementor-type=\"wp-page\" data-elementor-id=\"2737\" class=\"elementor elementor-2737\">\n\t\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-0b14e4e elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"0b14e4e\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-27890ef\" data-id=\"27890ef\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-01e4e05 elementor-widget elementor-widget-shortcode\" data-id=\"01e4e05\" data-element_type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div class=\"elementor-shortcode\">\n    <div class=\"forgotpassword\">\n        <style>\n            #title, .title {\n                display: none!important;\n            }\n            .forgotpassword {\n                padding: 80px 20px;\n            }\n            @media (max-width: 767px) {\n                .forgotpassword {\n                    padding: 40px 10px;\n                }\n            }\n            .forgot-password-feedback-container {\n                position: relative;\n            }\n            .forgot-password-feedback-layout {\n                position: absolute;\n                width: 100%;\n                text-align: center;\n                margin-top: -60px;\n                z-index: 100;\n            }\n            .forgot-password-feedback {\n                position: relative;\n                display: inline-block;\n                color: white;\n                padding: 5px 10px;\n                -webkit-animation: fadeInFromNone 0.5s ease-out;\n                -moz-animation: fadeInFromNone 0.5s ease-out;\n                -o-animation: fadeInFromNone 0.5s ease-out;\n                animation: fadeInFromNone 0.5s ease-out;\n                width: 100%;\n                border-radius: 5px;\n                font-family: 'Open Sans';\n            }\n            .forgot-password-feedback.success {\n                background-color: green;\n            }\n            .forgot-password-feedback.error {\n                background-color: red;\n                color: white;\n            }\n            .forgot-password-feedback a {\n                color: white;\n                text-decoration: underline;\n            }\n            .forgot-password-close {\n                position: absolute;\n                right: -19px;\n                top: -18px;\n                padding: 0 7px;\n                color: black;\n                cursor: pointer;\n            }\n\n\n            .card-container {\n                margin-left: auto !important;\n                margin-right: auto !important;\n                width: 100%;\n                max-width: 500px;\n                padding: 50px 40px !important;\n                box-shadow: 10px 10px 50px 0px rgb(0 0 0 \/ 10%);\n                -webkit-box-shadow: 10px 10px 50px 0px rgb(0 0 0 \/ 10%);\n                -moz-box-shadow: 10px 10px 50px 0px rgba(0,0,0,0.1);\n                border: none !important;\n                border-radius: 25px !important;\n            }\n            .my-title {\n                margin-bottom: 15px;\n                font-family: Grostesk-Regular,Arial, Helvetica, sans-serif;\n                font-weight: bold;\n            }\n            .my-paragraph {\n                font-family: 'Open Sans';\n                font-size: 14px;\n                margin-bottom: 30px;\n            }\n            .field-text {\n                border: none !important;\n                background-color: #F5F5F5 !important;\n                color: #818181;\n                font-size: 12px;\n                font-family: 'Open Sans';\n                border-radius: 7px;\n                box-sizing: border-box;\n                width: 100%;\n                margin: 0;\n                outline: none !important;\n                line-height: normal;\n            }\n            .button-submit {\n                border: none !important;\n                font-family: Grostesk-Regular,Arial, Helvetica, sans-serif;\n                font-size: 20px !important;\n                background: linear-gradient(251.5deg,#f04c24 46.51%,#f88d2a 99.75%) !important;\n                width: 100%;\n                border-radius: 7px !important;\n            }\n\n\n            .cooldown {\n                display: none;\n                font-family: 'Open Sans';\n            }\n            .height-cooldown-and-submit {\n                height: 51px;\n            }\n            @-webkit-keyframes fadeInFromNone {\n                0% {\n                    display: none;\n                    opacity: 0;\n                }\n\n                1% {\n                    display: block;\n                    opacity: 0;\n                }\n\n                100% {\n                    display: block;\n                    opacity: 1;\n                }\n            }\n\n            @-moz-keyframes fadeInFromNone {\n                0% {\n                    display: none;\n                    opacity: 0;\n                }\n\n                1% {\n                    display: block;\n                    opacity: 0;\n                }\n\n                100% {\n                    display: block;\n                    opacity: 1;\n                }\n            }\n\n            @-o-keyframes fadeInFromNone {\n                0% {\n                    display: none;\n                    opacity: 0;\n                }\n\n                1% {\n                    display: block;\n                    opacity: 0;\n                }\n\n                100% {\n                    display: block;\n                    opacity: 1;\n                }\n            }\n\n            @keyframes fadeInFromNone {\n                0% {\n                    display: none;\n                    opacity: 0;\n                }\n\n                1% {\n                    display: block;\n                    opacity: 0;\n                }\n\n                100% {\n                    display: block;\n                    opacity: 1;\n                }\n            }\n        <\/style>\n        <div class=\"forgot-password-feedback-container\">\n            <div class=\"forgot-password-feedback-layout\">\n                <div id=\"forgotPasswordFeedback\">\n                <\/div>\n            <\/div>\n        <\/div>\n        <form id=\"forgotPasswordForm\" class=\"card-container\" action=\"\">\n            <h2 class=\"my-title\">Forgot Password<\/h2>\n            <p class=\"my-paragraph\">Please enter your email address. You will receive a link to create a new password via email<\/p>\n            <div class=\"field\">\n                <p>\n                    <input required class=\"field-text\" type=\"text\" name=\"email\" value=\"\" placeholder=\"Email\" \/>\n                <\/p>\n            <\/div>\n            <div class=\"height-cooldown-and-submit\">\n                <div id=\"cooldown\" class=\"cooldown\"><\/div>\n                <button id=\"submitForgotPassword\" class=\"button alt button-submit\" type=\"submit\">Submit<\/button>\n            <\/div>\n        <input type=\"hidden\" name=\"trp-form-language\" value=\"en\"\/><\/form>\n        <script>\n            function templateInfo(type, message){\n                return `\n                    <div class=\"forgot-password-feedback ${type}\">\n                        ${message}\n                        <div class=\"forgot-password-close\" onclick=\"jQuery('#forgotPasswordFeedback').html('');\">\u00d7<\/div>\n                    <\/div>\n                `;\n            }\n\n            function templateInfoSuccess(message){\n                return templateInfo('success', message);\n            }\n\n            function templateInfoError(message){\n                return templateInfo('error', message);\n            }\n\n            function templateTimer(t) {\n                const min = Math.floor(t \/ 60);\n                const sec = t % 60;\n\n                const formatZero = (num) => (num < 10 ? `0${num}` : num);\n\n                return `${formatZero(min)}:${formatZero(sec)}`;\n            }\n        <\/script>\n        <script>\n            jQuery(document).ready(function(){\n                const COOLDOWN_KEY = 'forgot_password_cooldown_until';\n                const COOLDOWN_DURATION_KEY = 'forgot_password_cooldown_duration';\n\n                function startCooldown(duration) {\n                    const now = Date.now();\n                    const until = now + duration * 1000;\n\n                    localStorage.setItem(COOLDOWN_KEY, until);\n                    localStorage.setItem(COOLDOWN_DURATION_KEY, duration);\n\n                    runCooldown();\n                }\n\n                function getRemainingCooldown() {\n                    const until = localStorage.getItem(COOLDOWN_KEY);\n                    if (!until) return 0;\n\n                    const remaining = Math.ceil((until - Date.now()) \/ 1000);\n                    return remaining > 0 ? remaining : 0;\n                }\n\n                function runCooldown() {\n                    let remaining = getRemainingCooldown();\n\n                    if (remaining <= 0) {\n                        localStorage.removeItem(COOLDOWN_KEY);\n                        localStorage.removeItem(COOLDOWN_DURATION_KEY);\n                        jQuery(\"#cooldown\").hide();\n                        jQuery(\"#submitForgotPassword\").show();\n                        isCooldown = false;\n                        return;\n                    }\n\n                    isCooldown = true;\n                    jQuery(\"#cooldown\").show();\n                    jQuery(\"#submitForgotPassword\").hide();\n                    jQuery(\"#cooldown\").text(templateTimer(remaining));\n\n                    setTimeout(runCooldown, 1000);\n                }\n                \n                jQuery('#forgotPasswordForm').submit(submitForgotPassword)\n\n                const body = document.querySelector(\"body\")\n                body.classList.add(\"bg-grey-glass\")\n            \n                runCooldown();\n                \n                function submitForgotPassword(e) {\n                    e.preventDefault()\n                    if(!isCooldown){\n                        const forgotPasswordForm = jQuery(\"#forgotPasswordForm\").serialize();\n        \n                        const textBefore = jQuery(\"#submitForgotPassword\").text()\n                        jQuery(\"#submitForgotPassword\").text(\"Submitting...\")\n                        jQuery(\"#forgotPasswordForm\").css(\"pointer-events\", \"none\")\n                        jQuery(\"#forgotPasswordForm\").css(\"opacity\", \"0.5\")\n                        \n                        jQuery.ajax({\n                            type: \"POST\",\n                            url: \"https:\/\/jblstore.co.id\/wp-admin\/admin-ajax.php?action=ajax_forgot_password\",\n                            data: forgotPasswordForm,\n                            success: function (res) {\n\n                                jQuery(\"#submitForgotPassword\").text(textBefore)\n                                jQuery(\"#forgotPasswordForm\").css(\"pointer-events\", \"auto\")\n                                jQuery(\"#forgotPasswordForm\").css(\"opacity\", \"1\")\n\n                                let data = null\n\n                                try {\n                                    data = (typeof res === \"string\") ? JSON.parse(res) : res\n                                } catch (e) {\n                                    console.log(\"JSON parse error:\", e)\n                                    showModalAlert('Info', 'An error occurred, please try again')\n                                    return\n                                }\n\n                                \/\/ showModalAlert('Success', 'Email has been sent!', 'login')\n\n                                \/\/ ambil raw message dari response (bisa undefined)\n                                const raw = data?.data?.message || \"\";\n\n                                \/\/ ekstrak kode error pakai regex: cari token uppercase dengan underscore (contoh: EMAIL_NOT_FOUND)\n                                const match = raw.match(\/[A-Z0-9_]{3,}\/);\n                                const code = match ? match[0] : raw; \/\/ fallback ke raw jika tidak ditemukan token\n\n                                let msg = \"\";\n\n                                switch (code) {\n                                    case \"TOO_MANY_ATTEMPTS_TRY_LATER\":\n                                        msg = \"Too many attempts, please try again later\";\n                                        break;\n\n                                    default:\n                                        msg = \"If the email address you entered is associated with an account, you\u2019ll receive an email with instructions on how to reset your password. Please check your inbox (and spam\/junk folder) for delivery.\";\n                                        break;\n                                }\n\n                                \/\/ console.log(\"Forgot password error code:\", code, \"raw:\", raw);\n                                showModalAlert(\"Info\", msg);\n\n                                \/\/ contoh: selalu 60 detik\n                                startCooldown(60);\n\n                                \/\/ kalau mau escalating (60 \u2192 300)\n                                let duration = parseInt(localStorage.getItem(COOLDOWN_DURATION_KEY)) || 60;\n                                duration = duration === 60 ? 300 : 60;\n                                startCooldown(duration);\n                            },\n\n                            error: function (xhr, status, error) {\n                                \/\/ console.log(xhr, status, error)\n\n                                jQuery(\"#submitForgotPassword\").text(textBefore)\n                                jQuery(\"#forgotPasswordForm\").css(\"pointer-events\", \"auto\")\n                                jQuery(\"#forgotPasswordForm\").css(\"opacity\", \"1\")\n\n                                showModalAlert('Info', 'An error occurred, please try again')\n                            }\n                        });\n                            \n                    }\n                    \n                }\n            })\n        <\/script>\n    <\/div>\n\n    <\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_header_footer","meta":{"inline_featured_image":false,"footnotes":""},"class_list":["post-2737","page","type-page","status-publish","hentry","no-post-thumbnail"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v23.7 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Lupa Kata Sandi - JBL Store<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/jblstore.co.id\/en\/forgot-password\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Lupa Kata Sandi - JBL Store\" \/>\n<meta property=\"og:url\" content=\"https:\/\/jblstore.co.id\/en\/forgot-password\/\" \/>\n<meta property=\"og:site_name\" content=\"JBL Store\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/JBLAudioIndonesia\/\" \/>\n<meta property=\"article:modified_time\" content=\"2025-11-26T10:46:19+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"1 minute\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/jblstore.co.id\/en\/forgot-password\/\",\"url\":\"https:\/\/jblstore.co.id\/en\/forgot-password\/\",\"name\":\"Lupa Kata Sandi - JBL Store\",\"isPartOf\":{\"@id\":\"https:\/\/jblstore.co.id\/en\/#website\"},\"datePublished\":\"2024-01-16T11:13:14+00:00\",\"dateModified\":\"2025-11-26T10:46:19+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/jblstore.co.id\/en\/forgot-password\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/jblstore.co.id\/en\/forgot-password\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/jblstore.co.id\/en\/forgot-password\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/jblstore.co.id\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Forgot Password\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/jblstore.co.id\/en\/#website\",\"url\":\"https:\/\/jblstore.co.id\/en\/\",\"name\":\"JBL Store\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/jblstore.co.id\/en\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/jblstore.co.id\/en\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/jblstore.co.id\/en\/#organization\",\"name\":\"JBL Store\",\"url\":\"https:\/\/jblstore.co.id\/en\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/jblstore.co.id\/en\/#\/schema\/logo\/image\/\",\"url\":\"\/wp-content\/uploads\/2025\/11\/cropped-logo-jbl-1536x1131_cropped.png\",\"contentUrl\":\"\/wp-content\/uploads\/2025\/11\/cropped-logo-jbl-1536x1131_cropped.png\",\"width\":70,\"height\":52,\"caption\":\"JBL Store\"},\"image\":{\"@id\":\"https:\/\/jblstore.co.id\/en\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/JBLAudioIndonesia\/\",\"https:\/\/www.instagram.com\/jblindonesia\/\",\"https:\/\/www.youtube.com\/c\/JBLIndonesia\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Lupa Kata Sandi - JBL Store","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/jblstore.co.id\/en\/forgot-password\/","og_locale":"en_US","og_type":"article","og_title":"Lupa Kata Sandi - JBL Store","og_url":"https:\/\/jblstore.co.id\/en\/forgot-password\/","og_site_name":"JBL Store","article_publisher":"https:\/\/www.facebook.com\/JBLAudioIndonesia\/","article_modified_time":"2025-11-26T10:46:19+00:00","twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"1 minute"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/jblstore.co.id\/en\/forgot-password\/","url":"https:\/\/jblstore.co.id\/en\/forgot-password\/","name":"Lupa Kata Sandi - JBL Store","isPartOf":{"@id":"https:\/\/jblstore.co.id\/en\/#website"},"datePublished":"2024-01-16T11:13:14+00:00","dateModified":"2025-11-26T10:46:19+00:00","breadcrumb":{"@id":"https:\/\/jblstore.co.id\/en\/forgot-password\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/jblstore.co.id\/en\/forgot-password\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/jblstore.co.id\/en\/forgot-password\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/jblstore.co.id\/"},{"@type":"ListItem","position":2,"name":"Forgot Password"}]},{"@type":"WebSite","@id":"https:\/\/jblstore.co.id\/en\/#website","url":"https:\/\/jblstore.co.id\/en\/","name":"JBL Store","description":"","publisher":{"@id":"https:\/\/jblstore.co.id\/en\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/jblstore.co.id\/en\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/jblstore.co.id\/en\/#organization","name":"JBL Store","url":"https:\/\/jblstore.co.id\/en\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/jblstore.co.id\/en\/#\/schema\/logo\/image\/","url":"\/wp-content\/uploads\/2025\/11\/cropped-logo-jbl-1536x1131_cropped.png","contentUrl":"\/wp-content\/uploads\/2025\/11\/cropped-logo-jbl-1536x1131_cropped.png","width":70,"height":52,"caption":"JBL Store"},"image":{"@id":"https:\/\/jblstore.co.id\/en\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/JBLAudioIndonesia\/","https:\/\/www.instagram.com\/jblindonesia\/","https:\/\/www.youtube.com\/c\/JBLIndonesia"]}]}},"_links":{"self":[{"href":"https:\/\/jblstore.co.id\/en\/wp-json\/wp\/v2\/pages\/2737","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/jblstore.co.id\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/jblstore.co.id\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/jblstore.co.id\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/jblstore.co.id\/en\/wp-json\/wp\/v2\/comments?post=2737"}],"version-history":[{"count":7,"href":"https:\/\/jblstore.co.id\/en\/wp-json\/wp\/v2\/pages\/2737\/revisions"}],"predecessor-version":[{"id":106393,"href":"https:\/\/jblstore.co.id\/en\/wp-json\/wp\/v2\/pages\/2737\/revisions\/106393"}],"wp:attachment":[{"href":"https:\/\/jblstore.co.id\/en\/wp-json\/wp\/v2\/media?parent=2737"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}