Yêu cầu thg 10 11, 2023 11:17 SA 175 0 1
  • 175 0 1
+1

Reset select option khi click back history

Chia sẻ
  • 175 0 1

Mình gặp vấn đề như vậy, không biết có anh em nào từng gặp phải case này thì support mình với?

Mình có 1 thẻ select trên trang List, selected default là option A

Mình thực hiện search trong trang:

Bước 1: Mình chọn option B

Bước 2: Nhấn search và trang sẽ reload lại

Bước 3: Mình nhấn click back history của browser

Kết quả là cả màn hình back lại list default nhưng selected option của thẻ select lại có giá trị là B Mong muốn: Khi click back thì selected option của thẻ select sẽ back lại giá trị cũ, cụ thể trong trường hợp này là A.

1 CÂU TRẢ LỜI


Đã trả lời thg 10 12, 2023 7:28 SA
by Dev Success 101
Đã được chấp nhận
+2

Vấn đề em đang gặp phải là do trình duyệt lưu trạng thái của trang web như dữ liệu của các thẻ input, vị trí cuộn, trạng thái của các phần tử DOM... Các dữ liệu này được restore khi nhấn nút Back.

Anh nghĩ em hãy thử mấy cách sau:

  1. Trang nào ko muốn cache thì server thêm header yêu cầu ko no-cache chặng hạn
  2. Dùng JavaScript bắt sự kiện tải trang rồi thực hiện reset về default value
  3. Không render ssr cái field input đó, mà thử render dưới client side xem?

Nhưng mà anh nghĩ là có thể nó lưu các trạng thái này vào memory hoặc đâu đó, nên cách 1 và 3 có thể không có tác dụng. Cách 2 thì bắt sự kiện pageshow như sau:

<form method="GET" url="/">
  <input name="submitted" value="default" />
  <button type="submit">Submit</button>
</form>

<script>
  window.addEventListener('pageshow', () => {
    const input = document.querySelector('input');
    const url = new URL(location);

    if (input && !url.searchParams.get('submitted')) {
      input.value = 'default';
    }
  });
</script>
Chia sẻ
Avatar Hải Hà @HaiHaChan
thg 10 12, 2023 10:27 SA

@huukimit em đã thử và set lại được giá trị A rồi ạ, em cảm ơn anh đã support ạ ❤️

Avatar Nhật Minh @tung23062003
thg 10 14, 2023 8:11 SA

qua hay

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí