{"id":12846,"date":"2026-01-07T15:04:24","date_gmt":"2026-01-07T08:04:24","guid":{"rendered":"https:\/\/hafelethailand.com\/?page_id=12846"},"modified":"2026-01-08T13:47:26","modified_gmt":"2026-01-08T06:47:26","slug":"compare-digital-door-lock","status":"publish","type":"page","link":"https:\/\/hafelethailand.com\/en\/compare-digital-door-lock\/","title":{"rendered":"Compare Digital Door Lock"},"content":{"rendered":"\n<div class=\"bg-banner d-none\"><\/div>\n<div class=\"col-lg-8 col-md-10 col-11 mx-auto text-center mt-4\">\n\t<h1 class=\"fs-2 mb-2\" style=\"color:var(--color-mode-red2);\">Compare Digital Door Lock Hafele<\/h1>\n\t\n<p class=\"text-white\">Comparing H\u00e4fele Digital Door Locks: Meeting Every Functional Need<\/p>\t\n<\/div>\n\n\n<div class=\"px-2 px-md-4 p-lg-0 pb-0\">\n  <div class=\"row row-cols-2 g-md-4 g-2 text-center align-items-center\">\n      <div class=\"col\"><a class=\"button-menu active\" href=\"https:\/\/hafelethailand.com\/en\/compare-digital-door-lock\/\"><span class=\"ic ic-sort\"><\/span><br class=\"d-md-none\">Compare Digital Door Lock Hafele<\/a><\/div>\n      <div class=\"col\"><a class=\"button-menu\" href=\"https:\/\/hafelethailand.com\/en\/choose-digital-door-lock\/\"><span class=\"ic ic-search\"><\/span><br class=\"d-md-none\">Choose Digital Door Lock<\/a><\/div>\n  <\/div>\n  <\/div>\n  <style>\n  .button-menu{padding: 10px;border: 1px solid;background: #fff; font-size: 18px; border-radius: 8px; display:flex; justify-content:center;}.button-menu i{font-size: 30px;}.active{color:var(--color-mode-red2)!important;border:1px solid var(--color-mode-red2);}.button-menu:hover,.button-menu:active{color:#fff!important;background:var(--color-mode-red2);}\n  @media(max-width:768px){.button-menu{font-size: 16px;}.button-menu i{font-size: 25px;}}\n  @media(max-width:576px){.button-menu{padding: 10px; font-size: 15px;display:block;}}\n  <\/style>\n\n\n<div class=\"d-flex\">\n  <table class=\"table table-bordered align-middle\">\n    <thead>\n      <tr>\n        <th><\/th>\n        <th><select id=\"product-col-1\" class=\"form-select product-selector\">\u2026<\/select><\/th>\n        <th><select id=\"product-col-2\" class=\"form-select product-selector\">\u2026<\/select><\/th>\n        <th><select id=\"product-col-3\" class=\"form-select product-selector\">\u2026<\/select><\/th>\n      <\/tr>\n    <\/thead>\n    <tbody>\n      <tr class=\"bg-white\">\n        <td class=\"fw-bold\">DESCRIPTION<br>\n        <\/td>\n        <td class=\"product1\" data-feature=\"img\">\n          <p data-feature=\"id\"><\/p>\n        <\/td>\n        <td class=\"product2\" data-feature=\"img\">\n          <p data-feature=\"id\"><\/p>\n        <\/td>\n        <td class=\"product3\" data-feature=\"img\">\n          <p data-feature=\"id\"><\/p>\n        <\/td>\n\n      <tr>\n        <td class=\"fw-bold text-center\" colspan=\"4\">\n          ACCESS MODES<\/td>\n      <\/tr>\n      <tr>\n        <td class=\"fw-bold\">PALM ID<br>\n        <\/td>\n        <td class=\"product1\" data-feature=\"palm\"><\/td>\n        <td class=\"product2\" data-feature=\"palm\"><\/td>\n        <td class=\"product3\" data-feature=\"palm\"><\/td>\n      <\/tr>\n      <tr>\n        <td class=\"fw-bold\">PIN CODE<br>\n        <\/td>\n        <td class=\"product1\" data-feature=\"pin\"><\/td>\n        <td class=\"product2\" data-feature=\"pin\"><\/td>\n        <td class=\"product3\" data-feature=\"pin\"><\/td>\n      <\/tr>\n      <tr>\n        <td class=\"fw-bold\">KEYCARD<br>\n        <\/td>\n        <td class=\"product1\" data-feature=\"keycard\"><\/td>\n        <td class=\"product2\" data-feature=\"keycard\"><\/td>\n        <td class=\"product3\" data-feature=\"keycard\"><\/td>\n      <\/tr>\n      <tr>\n        <td class=\"fw-bold\">FINGERPRINT<br>\n        <\/td>\n        <td class=\"product1\" data-feature=\"finger\"><\/td>\n        <td class=\"product2\" data-feature=\"finger\"><\/td>\n        <td class=\"product3\" data-feature=\"finger\"><\/td>\n      <\/tr>\n      <tr>\n        <td class=\"fw-bold\">FACE ID<br>\n        <\/td>\n        <td class=\"product1\" data-feature=\"face\"><\/td>\n        <td class=\"product2\" data-feature=\"face\"><\/td>\n        <td class=\"product3\" data-feature=\"face\"><\/td>\n      <\/tr>\n      <tr>\n        <td class=\"fw-bold\">MECHANICAL KEY<br>\n        <\/td>\n        <td class=\"product1\" data-feature=\"key\"><\/td>\n        <td class=\"product2\" data-feature=\"key\"><\/td>\n        <td class=\"product3\" data-feature=\"key\"><\/td>\n      <\/tr>\n      <tr>\n        <td class=\"fw-bold text-center\" colspan=\"4\">\n          PRODUCT SPECIFICATION<\/td>\n      <\/tr>\n      <tr>\n        <td class=\"fw-bold\">FRONT BODY (WxHxD mm)<br>\n         <\/td>\n        <td class=\"product1\" data-feature=\"front\"><\/td>\n        <td class=\"product2\" data-feature=\"front\"><\/td>\n        <td class=\"product3\" data-feature=\"front\"><\/td>\n      <\/tr>\n      <tr>\n        <td class=\"fw-bold\">BACK BODY (WxHxD mm)<br>\n        <\/td>\n        <td class=\"product1\" data-feature=\"back\"><\/td>\n        <td class=\"product2\" data-feature=\"back\"><\/td>\n        <td class=\"product3\" data-feature=\"back\"><\/td>\n      <\/tr>\n      <tr>\n        <td class=\"fw-bold\">DOOR THICKNESS (mm)<\/td>\n        <td class=\"product1\" data-feature=\"thickness\"><\/td>\n        <td class=\"product2\" data-feature=\"thickness\"><\/td>\n        <td class=\"product3\" data-feature=\"thickness\"><\/td>\n      <\/tr>\n      <tr>\n        <td class=\"fw-bold\">BACKSET (mm)<br>\n        <\/td>\n        <td class=\"product1\" data-feature=\"backset\"><\/td>\n        <td class=\"product2\" data-feature=\"backset\"><\/td>\n        <td class=\"product3\" data-feature=\"backset\"><\/td>\n      <\/tr>\n      <tr>\n        <td class=\"fw-bold\">MORTISE DEPTH (mm)<br>\n        <\/td>\n        <td class=\"product1\" data-feature=\"mortise\"><\/td>\n        <td class=\"product2\" data-feature=\"mortise\"><\/td>\n        <td class=\"product3\" data-feature=\"mortise\"><\/td>\n      <\/tr>\n      <tr>\n        <td class=\"fw-bold text-center\" colspan=\"4\">ADDITIONAL<\/td>\n      <\/tr>\n      <tr>\n      <tr>\n        <td class=\"fw-bold\">LOCK TYPE<\/td>\n        <td class=\"product1\" data-feature=\"lock\"><\/td>\n        <td class=\"product2\" data-feature=\"lock\"><\/td>\n        <td class=\"product3\" data-feature=\"lock\"><\/td>\n      <\/tr>\n      <tr>\n        <td class=\"fw-bold\">MASTER CODE<\/td>\n        <td class=\"product1\" data-feature=\"mastercode\"><\/td>\n        <td class=\"product2\" data-feature=\"mastercode\"><\/td>\n        <td class=\"product3\" data-feature=\"mastercode\"><\/td>\n      <\/tr>\n      <tr>\n        <td class=\"fw-bold\">WI-FI<\/td>\n        <td class=\"product1\" data-feature=\"wifi\"><\/td>\n        <td class=\"product2\" data-feature=\"wifi\"><\/td>\n        <td class=\"product3\" data-feature=\"wifi\"><\/td>\n      <\/tr>\n      <tr>\n        <td class=\"fw-bold\">BLUETOOTH<\/td>\n        <td class=\"product1\" data-feature=\"blu\"><\/td>\n        <td class=\"product2\" data-feature=\"blu\"><\/td>\n        <td class=\"product3\" data-feature=\"blu\"><\/td>\n      <\/tr>\n      <tr>\n        <td class=\"fw-bold\">ZIGBEE<\/td>\n        <td class=\"product1\" data-feature=\"zig\"><\/td>\n        <td class=\"product2\" data-feature=\"zig\"><\/td>\n        <td class=\"product3\" data-feature=\"zig\"><\/td>\n      <\/tr>\n      <tr>\n        <td class=\"fw-bold\">*Remote control via APP<\/td>\n        <td class=\"product1\" data-feature=\"remote\"><\/td>\n        <td class=\"product2\" data-feature=\"remote\"><\/td>\n        <td class=\"product3\" data-feature=\"remote\"><\/td>\n      <\/tr>\n      <tr>\n        <td class=\"fw-bold\">BTS AND MRT COMPATIBLE<\/td>\n        <td class=\"product1\" data-feature=\"bts_mrt\"><\/td>\n        <td class=\"product2\" data-feature=\"bts_mrt\"><\/td>\n        <td class=\"product3\" data-feature=\"bts_mrt\"><\/td>\n      <\/tr>\n      <tr>\n        <td class=\"fw-bold\">LOW BATTERY ALARM<br><\/td>\n        <td class=\"product1\" data-feature=\"battery\"><\/td>\n        <td class=\"product2\" data-feature=\"battery\"><\/td>\n        <td class=\"product3\" data-feature=\"battery\"><\/td>\n      <\/tr>\n      <tr>\n        <td class=\"fw-bold\">BURGLAR ALARM<br><\/td>\n        <td class=\"product1\" data-feature=\"burglar\"><\/td>\n        <td class=\"product2\" data-feature=\"burglar\"><\/td>\n        <td class=\"product3\" data-feature=\"burglar\"><\/td>\n      <\/tr>\n      <tr>\n        <td class=\"fw-bold\">COLOR<br><\/td>\n        <td class=\"product1\" data-feature=\"color\"><\/td>\n        <td class=\"product2\" data-feature=\"color\"><\/td>\n        <td class=\"product3\" data-feature=\"color\"><\/td>\n      <\/tr>\n      <tr>\n        <td class=\"fw-bold\">Door type<br><\/td>\n        <td class=\"product1\" data-feature=\"door_type\"><\/td>\n        <td class=\"product2\" data-feature=\"door_type\"><\/td>\n        <td class=\"product3\" data-feature=\"door_type\"><\/td>\n      <\/tr>\n      <tr>\n        <td class=\"fw-bold\">Price (THB)<br><\/td>\n        <td class=\"product1\" data-feature=\"price\"><\/td>\n        <td class=\"product2\" data-feature=\"price\"><\/td>\n        <td class=\"product3\" data-feature=\"price\"><\/td>\n      <\/tr>\n    <\/tbody>\n  <\/table>\n<\/div>\n<div class=\"text-danger\">* Gateway is required for remote control function (Article number 499.21.220)<br><\/div>\n<script>\n    const API_URL = 'https:\/\/raw.githubusercontent.com\/Cattleheart\/stuff\/refs\/heads\/main\/ddl-product-data-en.json';\n    const selectors = [\n      document.getElementById('product-col-1'),\n      document.getElementById('product-col-2'),\n      document.getElementById('product-col-3'),\n    ];\n    \n    const defaultProducts = ['ER4900', 'ER5100', 'ER5200']; \n    \n    fetch(API_URL + '?cache=' + Date.now())\n      .then(res => res.json())\n      .then(data => {\n        const productKeys = Object.keys(data);\n    \n        \/\/ Populate all dropdowns\n        selectors.forEach((select, idx) => {\n          select.innerHTML = ''; \/\/ Clear old options\n          productKeys.forEach(key => {\n            const option = document.createElement('option');\n            option.value = key;\n            option.textContent = data[key].id || key;\n            select.appendChild(option);\n          });\n    \n          const defaultKey = defaultProducts[idx];\n          if (defaultKey && productKeys.includes(defaultKey)) {\n            select.value = defaultKey;\n          }\n        });\n    \n        \/\/ Initial render with selected or default values\n        selectors.forEach((select, idx) => {\n          populateColumn(data, select.value, idx + 1);\n        });\n    \n        \/\/ Listen to changes\n        selectors.forEach((select, idx) => {\n          select.addEventListener('change', () => {\n            populateColumn(data, select.value, idx + 1);\n          });\n        });\n      })\n      .catch(err => console.error('\u274c Failed to fetch product data:', err));\n\n  function populateColumn(data, productKey, colNum) {\n    const productData = data[productKey];\n    if (!productData) return;\n    const cells = document.querySelectorAll(`.product${colNum}[data-feature]`);\n    cells.forEach(cell => {\n      const feature = cell.getAttribute('data-feature');\n      if (!feature) return;\n      const value = productData[feature];\n      if (feature === 'img') {\n        \/\/ If there's a <p data-feature=\"id\">, update it separately\n        const imgHTML = value ?\n          `<img decoding=\"async\" src=\"${value}\" alt=\"${productData.id}\" style=\"max-width: 300px;\">` :\n          '';\n        const idHTML = productData.id ? `<p data-feature=\"id\">${productData.id}<\/p>` : '';\n        cell.innerHTML = imgHTML + idHTML;\n      } else if (feature === 'color') {\n        if (typeof value === 'object') {\n          \/\/ If color is an object, show color swatches or image previews\n          cell.innerHTML = Object.entries(value).map(([name, url]) => {\n            return `<div style=\"display:inline-block; text-align:center; margin-right:10px;\">\n                <img decoding=\"async\" src=\"${url}\" alt=\"${name}\" style=\"width:60px; height:60px;\">\n                <div style=\"font-size:12px;\">${name}<\/div>\n              <\/div>`;\n          }).join('');\n        }\n      } else if ([ \"bts_mrt\", \"battery\", \"burglar\", \"mastercode\", \"key\",\"remote\"].includes(feature)) {\n            if (typeof value === 'object') {\n                const check = value.Check || '';\n                const asterisk = value.Asterisk || '';\n                cell.innerHTML = `<span style=\"display: inline-flex; align-items: center; gap: 4px;\">${check}${asterisk}<\/span>`;\n            }\n        else {\n          cell.textContent = value !== undefined && value !== null && value !== '' ? value : '-';\n        }\n      } else if ([ \"blu\", \"zig\", \"wifi\"].includes(feature)) {\n        if (typeof value === 'object') {\n          \/\/ If color is an object, show color swatches or image previews\n          cell.innerHTML = Object.entries(value).map(([name, url]) => {\n            return `<div style=\"display:inline-block; text-align:center; margin-right:10px;\">\n                <img decoding=\"async\" src=\"${url}\" alt=\"${name}\" style=\"width:60px; height:60px;\">\n                <div style=\"font-size:12px;\">${name}<\/div>\n              <\/div>`;\n          }).join('');\n        }\n        else {\n          cell.textContent = value !== undefined && value !== null && value !== '' ? value : '-';\n        }\n      }\n      else {\n        cell.textContent = value !== undefined && value !== null && value !== '' ?\n          value :\n          '-';\n      }\n    });\n  }\n<\/script>\n<style>\n  .bg-banner {\n    position: relative;\n    background: url(\/wp-content\/uploads\/2026\/01\/banner-ddl-compair.jpg);\n    background-repeat: no-repeat;\n    background-size: cover;\n    background-position: center center;\n    height: 480px;\n  }\n\n  .product1,\n  .product2,\n  .product3 {\n    text-align: center;\n  }\n\n  .table tbody td {\n    background: #fff;\n  }\n\n  .table tbody td.fw-bold {\n    background: #edecea;\n  }\n\n  .table tbody tr:first-child td.product1,\n  .table tbody tr:first-child td.product2,\n  .table tbody tr:first-child td.product3 {\n    vertical-align: top;\n  }\n\n  .table th {\n    background: var(--color-mode-red2);\n    position: sticky;\n    top: 150px;\n    z-index: 10;\n    padding: 20px;\n  }\n\n  @media(max-width:768.99px) {\n    .product3 {\n      display: none;\n    }\n\n    .table th {\n      padding: 10px;\n    }\n  }\n\n  @media(max-width:576.98px) {\n    .table {\n      font-size: 12px;\n    }\n\n    .product1,\n    .product2 {\n      width: 45%;\n    }\n\n    .tableFixHead {\n      height: 600px;\n    }\n\n    .w {\n      width: 10%;\n    }\n\n    .bg-banner {\n      background: url(\/wp-content\/uploads\/2026\/01\/banner-ddl-compair-mb.jpg);\n      background-repeat: no-repeat;\n      background-size: cover;\n      background-position: center center;\n      height: 360px;\n    }\n<\/style>\n\n\n<div class=\"row justify-content-lg-center justify-content-evenly mb-4\"> <a href=\"https:\/\/line.me\/ti\/p\/~@hafelethailand\" class=\"col-md-3 col-10 btn mx-lg-3 mb-md-0 mb-3 py-3 text-white\" style=\"background:#00b900;\"><i class=\"fab fa-line pe-2 fs-5\"><\/i>Order Now<\/a> <a href=\"https:\/\/hafelethailand.com\/en\/about\/design-studio\/\" class=\"col-md-3 col-10 btn btn-secondary mx-lg-3 mb-md-0 mb-3 py-3 text-white\" target=\"_blank\"><span class=\"ic ic-map-marker-o\"><\/span>Hafele design studio<\/a> <a href=\"tel:027687171\" class=\"col-md-3 col-10 btn btn-danger mx-lg-3 py-3 text-white\"><span class=\"ic ic-phone-o\"><\/span>02-768-7171<\/a><\/div>\n","protected":false},"excerpt":{"rendered":"<p>Compare Digital Door Lock Hafele Comparing H\u00e4fele Digital Door Locks: Meeting Every Functional Need Compare Digital Door Lock Hafele Choose Digital Door Lock \u2026 \u2026 \u2026 DESCRIPTION ACCESS MODES PALM ID PIN CODE KEYCARD FINGERPRINT FACE ID MECHANICAL KEY PRODUCT SPECIFICATION FRONT BODY (WxHxD mm) BACK BODY (WxHxD mm) DOOR THICKNESS (mm) BACKSET (mm) MORTISE [&hellip;]<\/p>\n","protected":false},"author":11572791,"featured_media":0,"parent":0,"menu_order":17,"comment_status":"closed","ping_status":"closed","template":"page-design-tools.php","meta":{"_crdt_document":"","footnotes":""},"class_list":["post-12846","page","type-page","status-publish","hentry"],"aioseo_notices":[],"jetpack_shortlink":"https:\/\/wp.me\/PgXgGc-3lc","_links":{"self":[{"href":"https:\/\/hafelethailand.com\/en\/wp-json\/wp\/v2\/pages\/12846","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/hafelethailand.com\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/hafelethailand.com\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/hafelethailand.com\/en\/wp-json\/wp\/v2\/users\/11572791"}],"replies":[{"embeddable":true,"href":"https:\/\/hafelethailand.com\/en\/wp-json\/wp\/v2\/comments?post=12846"}],"version-history":[{"count":4,"href":"https:\/\/hafelethailand.com\/en\/wp-json\/wp\/v2\/pages\/12846\/revisions"}],"predecessor-version":[{"id":13308,"href":"https:\/\/hafelethailand.com\/en\/wp-json\/wp\/v2\/pages\/12846\/revisions\/13308"}],"wp:attachment":[{"href":"https:\/\/hafelethailand.com\/en\/wp-json\/wp\/v2\/media?parent=12846"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}