Fix: agresif override browser cache untuk dateInput dengan removeAttribute, requestAnimationFrame, dan setTimeout

This commit is contained in:
mwpn
2025-12-19 05:31:38 +07:00
parent 78c323a9fe
commit 514bc9b176
3 changed files with 46 additions and 6 deletions

View File

@@ -77,7 +77,7 @@
<section class="filters"> <section class="filters">
<div class="filter-group"> <div class="filter-group">
<label for="filter-date" class="filter-label">Tanggal</label> <label for="filter-date" class="filter-label">Tanggal</label>
<input id="filter-date" type="date" class="filter-control" /> <input id="filter-date" type="date" class="filter-control" autocomplete="off" />
</div> </div>
<div class="filter-group"> <div class="filter-group">
<label for="filter-location" class="filter-label">Lokasi</label> <label for="filter-location" class="filter-label">Lokasi</label>

View File

@@ -146,7 +146,7 @@
<section class="filters"> <section class="filters">
<div class="filter-group"> <div class="filter-group">
<label for="filter-date" class="filter-label">Tanggal</label> <label for="filter-date" class="filter-label">Tanggal</label>
<input id="filter-date" type="date" class="filter-control" /> <input id="filter-date" type="date" class="filter-control" autocomplete="off" />
</div> </div>
<div class="filter-group"> <div class="filter-group">
<label for="filter-location" class="filter-label">Lokasi</label> <label for="filter-location" class="filter-label">Lokasi</label>
@@ -852,11 +852,31 @@
// Lakukan ini SEBELUM setupFilters() untuk memastikan value ter-set dengan benar // Lakukan ini SEBELUM setupFilters() untuk memastikan value ter-set dengan benar
const dateInput = document.getElementById('filter-date'); const dateInput = document.getElementById('filter-date');
if (dateInput) { if (dateInput) {
// Force set value dan attribute untuk override browser cache // AGGRESIF: Remove value dulu, lalu set lagi untuk force override browser cache
dateInput.removeAttribute('value');
dateInput.value = '';
// Set value multiple times dengan berbagai cara untuk memastikan
dateInput.value = today; dateInput.value = today;
dateInput.setAttribute('value', today); dateInput.setAttribute('value', today);
// Juga set property langsung untuk memastikan
dateInput.defaultValue = today; dateInput.defaultValue = today;
// Force update dengan requestAnimationFrame untuk memastikan DOM sudah ready
requestAnimationFrame(() => {
dateInput.value = today;
dateInput.setAttribute('value', today);
console.log('[Events] Date input force set (RAF):', today, 'actual value:', dateInput.value);
});
// Set lagi setelah semua async operations selesai
setTimeout(() => {
if (dateInput.value !== today) {
dateInput.value = today;
dateInput.setAttribute('value', today);
console.log('[Events] Date input force set (timeout):', today, 'actual value:', dateInput.value);
}
}, 100);
console.log('[Events] Date input set to:', today, 'actual value:', dateInput.value); console.log('[Events] Date input set to:', today, 'actual value:', dateInput.value);
} }

View File

@@ -775,11 +775,31 @@ document.addEventListener('DOMContentLoaded', async () => {
// Lakukan ini SEBELUM setupFilters() untuk memastikan value ter-set dengan benar // Lakukan ini SEBELUM setupFilters() untuk memastikan value ter-set dengan benar
const dateInput = document.getElementById('filter-date'); const dateInput = document.getElementById('filter-date');
if (dateInput) { if (dateInput) {
// Force set value dan attribute untuk override browser cache // AGGRESIF: Remove value dulu, lalu set lagi untuk force override browser cache
dateInput.removeAttribute('value');
dateInput.value = '';
// Set value multiple times dengan berbagai cara untuk memastikan
dateInput.value = today; dateInput.value = today;
dateInput.setAttribute('value', today); dateInput.setAttribute('value', today);
// Juga set property langsung untuk memastikan
dateInput.defaultValue = today; dateInput.defaultValue = today;
// Force update dengan requestAnimationFrame untuk memastikan DOM sudah ready
requestAnimationFrame(() => {
dateInput.value = today;
dateInput.setAttribute('value', today);
console.log('[Dashboard] Date input force set (RAF):', today, 'actual value:', dateInput.value);
});
// Set lagi setelah semua async operations selesai
setTimeout(() => {
if (dateInput.value !== today) {
dateInput.value = today;
dateInput.setAttribute('value', today);
console.log('[Dashboard] Date input force set (timeout):', today, 'actual value:', dateInput.value);
}
}, 100);
console.log('[Dashboard] Date input set to:', today, 'actual value:', dateInput.value); console.log('[Dashboard] Date input set to:', today, 'actual value:', dateInput.value);
} }