Ý kiến của bạn
tạo nên sự thay đổi

Mỗi góp ý đều được đội ngũ chúng tôi đọc kỹ và phản hồi trong 24–48 giờ. Cảm ơn bạn đã dành thời gian giúp chúng tôi cải thiện.

Phản hồi trong 24–48h Bảo mật thông tin Ẩn danh tuỳ chọn
4.8/5
Mức hài lòng TB
2,180
Góp ý đã nhận
98%
Tỷ lệ phản hồi
Gửi góp ý của bạn
Điền thông tin phía dưới — chúng tôi sẽ liên hệ lại sớm nhất
Chọn mức đánh giá
0/150
0/2000
Thông tin liên lạc (để chúng tôi phản hồi lại)
Kéo thả file vào đây hoặc chọn file
JPG, PNG, GIF, PDF, DOC — tối đa 5MB/file

Thông tin của bạn được bảo mật và chỉ dùng để liên hệ phản hồi góp ý. Xem Chính sách bảo mật .

Câu hỏi thường gặp
Góp ý của tôi có được đọc không?
Có — 100% góp ý được đội ngũ đọc và phân loại trong vòng 24 giờ làm việc.
Bao lâu thì tôi nhận được phản hồi?
Tôi có thể gửi ẩn danh không?
Góp ý gần đây được duyệt
Mi
Minh Tuấn
2 giờ trước
"Website rất dễ dùng, quy trình donate nhanh gọn!"
Ẩn danh
5 giờ trước
"Mong có thêm báo cáo chi tiết cho từng campaign."
La
Lan Phương
1 ngày trước
"Đội hỗ trợ nhiệt tình và phản hồi rất nhanh."
document.querySelectorAll('.fb-stars input').forEach(input => { input.addEventListener('change', function () { const labelEl = document.getElementById('starLabel'); if (labelEl) labelEl.textContent = starLabels[this.value] || ''; }); }); // ===== FILE UPLOAD PREVIEW ===== const attachInput = document.getElementById('attachInput'); const uploadZone = document.getElementById('uploadZone'); const uploadInner = document.getElementById('uploadInner'); const uploadPreview = document.getElementById('uploadPreview'); let selectedFiles = []; const toastMaxFiles = "T\u1ed1i \u0111a 3 file \u0111\u00ednh k\u00e8m"; const toastFileBig = "v\u01b0\u1ee3t qu\u00e1 5MB"; if (attachInput) { attachInput.addEventListener('change', function () { handleFiles(Array.from(this.files)); }); } if (uploadZone) { uploadZone.addEventListener('dragover', e => { e.preventDefault(); uploadZone.classList.add('drag-over'); }); uploadZone.addEventListener('dragleave', () => { uploadZone.classList.remove('drag-over'); }); uploadZone.addEventListener('drop', e => { e.preventDefault(); uploadZone.classList.remove('drag-over'); handleFiles(Array.from(e.dataTransfer.files)); }); } function handleFiles(files) { files.forEach(file => { if (selectedFiles.length >= 3) { showToast(toastMaxFiles); return; } if (file.size > 5 * 1024 * 1024) { showToast(`"${file.name}" ${toastFileBig}`); return; } if (!selectedFiles.find(f => f.name === file.name)) { selectedFiles.push(file); } }); renderPreview(); } function renderPreview() { if (selectedFiles.length > 0) { uploadInner.style.display = 'none'; uploadPreview.style.display = 'flex'; uploadPreview.innerHTML = selectedFiles.map((f, i) => `
${f.name}
` ).join(''); const dt = new DataTransfer(); selectedFiles.forEach(f => dt.items.add(f)); attachInput.files = dt.files; } else { uploadInner.style.display = 'block'; uploadPreview.style.display = 'none'; uploadPreview.innerHTML = ''; attachInput.value = ''; } } function removeFile(idx) { selectedFiles.splice(idx, 1); renderPreview(); } // ===== FAQ TOGGLE ===== function toggleFaq(item) { const answer = item.querySelector('.fb-faq-item__a'); const isOpen = item.classList.contains('fb-faq-item--open'); document.querySelectorAll('.fb-faq-item').forEach(el => { el.classList.remove('fb-faq-item--open'); el.querySelector('.fb-faq-item__a').style.display = 'none'; }); if (!isOpen) { item.classList.add('fb-faq-item--open'); answer.style.display = 'block'; } } // ===== SUBMIT LOADING ===== const form = document.getElementById('feedbackForm'); const submitBtn = document.getElementById('submitBtn'); if (form && submitBtn) { form.addEventListener('submit', function () { submitBtn.querySelector('.fb-submit-btn__inner').style.display = 'none'; submitBtn.querySelector('.fb-submit-btn__loader').style.display = 'flex'; submitBtn.disabled = true; }); } // ===== TOAST ===== function showToast(msg) { const toast = document.getElementById('fbToast'); toast.textContent = msg; toast.classList.add('show'); setTimeout(() => toast.classList.remove('show'), 2500); } // ===== AUTO-HIDE SUCCESS ALERT ===== const successAlert = document.getElementById('successAlert'); if (successAlert) { setTimeout(() => { successAlert.style.transition = 'opacity 0.5s'; successAlert.style.opacity = '0'; setTimeout(() => successAlert.remove(), 500); }, 5000); }