Buat halaman untuk memberi tahu browser agar tidak menyimpan / menyimpan nilai input

116

Sebagian besar nilai input bentuk cache browser. Jadi, saat pengguna menyegarkan halaman, input memiliki nilai yang sama.

Inilah masalah saya. Ketika pengguna mengklik Simpan , server memvalidasi data yang diposkan (mis. Produk yang dicentang), dan jika tidak valid, mengirimkannya kembali ke browser. Namun, seperti yang dinyatakan di atas, meskipun server menghapus pilihan untuk beberapa nilai, nilai tersebut mungkin masih dipilih karena cache browser!

Data saya memiliki kotak centang yang tidak terlihat (sampai item induk dipilih), sehingga pengguna mungkin bahkan tidak menyadari bahwa beberapa nilai sebelumnya masih dipilih, sampai mengklik Simpan lagi dan mendapat pesan kesalahan - meskipun pengguna mengira tidak. Yang menjengkelkan.

Ini dapat diselesaikan dengan melakukan Ctrl+ F5, tetapi ini bahkan bukan solusi. Apakah ada cara otomatis / terprogram untuk memberi tahu browser agar tidak menyimpan data input formulir di beberapa formulir / halaman?

ratu3
sumber
1
Apakah <form autocomplete="off"...ada pilihan untuk Anda? Apakah masalah ini terjadi di semua browser, atau hanya di satu browser tertentu?
David Kolar
Apakah ada cara untuk menjawab pertanyaan ini dengan mengacu pada <select>daftar drop-down . Saya memiliki daftar dan telah menentukan selectedpilihan tetapi menyegarkan halaman mempertahankan opsi yang dipilih sebelumnya.
Martin
Saya ingin mencapai yang sebaliknya - pertahankan nilai masukan setiap halaman pada tombol kembali (klik kembali dua kali untuk mendapatkan masukan yang sesuai). Ada berbagai contoh seputar penggunaan banyak kode JS, (yang tidak benar-benar berfungsi IMHO) tetapi - apakah ada cara yang lebih sederhana? Saya mencoba autocomplete = "on" pada kolom formulir dan masukan-tidak berfungsi. Browser adalah Chrome.
Dmitry z

Jawaban:

197

Apakah Anda secara eksplisit menyetel nilai sebagai kosong? Sebagai contoh:

<input type="text" name="textfield" value="">

Itu harus menghentikan browser menempatkan data di tempat yang tidak semestinya. Sebagai alternatif, Anda dapat menambahkan autocompleteatribut ke tag formulir:

<form autocomplete="off" ...></form>
Kambing Tidak Puas
sumber
1
Saya berbicara tentang kotak centang jadi saya tidak dapat menyetel nilai menjadi "". Dan, apakah pelengkapan otomatis mati berarti tidak menyimpan nilai input formulir "saat pengguna menekan F5", bukan hanya "untuk daftar pelengkapan otomatis dropdown"?
ratu3
2
Menurut developer.mozilla.org/en/How_to_Turn_Off_Form_Autocompletion , autcompletion = off mempengaruhi "Sesi riwayat cache", setidaknya di Gecko. Saya akan menguji apakah itu berfungsi untuk apa yang saya butuhkan.
ratu3
1
@ queen3: Ya, kotak centang adalah masalah karena tidak ada cara untuk secara eksplisit mengatakan "tidak dicentang". Jika Anda masih mengalami masalah, Anda dapat mencobanya checked="false", ini mungkin berfungsi di beberapa browser. Alternatif lain adalah dengan menggunakan Javascript / jQuery untuk secara eksplisit menghapus centang semua kotak centang pada pemuatan halaman.
DisgruntledGoat
1
@ queen3, maksud Anda "autocomplete = off" bukan "autocompletion = off"
Matt Baker
2
Semua jawaban dan saran tidak berhasil untuk saya. Menggunakan chrome dan develeoping .net
hakan
45

Dari referensi Stack Overflow

Ini tidak bekerja dengan value = "" jika browser sudah menyimpan nilainya jadi Anda harus menambahkan.

Untuk tag masukan ada atribut pelengkapan otomatis yang dapat Anda setel:

<input type="text" autocomplete="off" />

Anda juga dapat menggunakan pelengkapan otomatis untuk formulir.

shareef
sumber
9
Di Chrome, tampaknya autocomplete="off"tidak berpengaruh saat digunakan pada elemen bentuk individual - bahkan dengan valueatribut yang secara eksplisit dikosongkan, dan saat mengirim Cache-Control: Must-Revalidateheader, ini tidak berpengaruh. Saya harus menerapkan autocomplete="off"atribut ke <form>elemen itu sendiri untuk menekan perilaku ini di Chrome.
mindplay.dk
saya melakukan autocomplete = "off" pada formulir tetapi tidak berhasil untuk saya
Kingsley Simon
saya perlu info lebih lanjut @KingsSimon seperti browser, dan Anda mungkin memiliki beberapa pengaturan pada browser Anda yang mencegah perilaku yang benar
shareef
1
tampaknya perilaku browser telah berubah: developer.mozilla.org/en-US/docs/Web/Security/…
david
dan dicatat form html yang valid. dan misalnya itu bukan bentuk di dalam dll lain
shareef
10

Pendekatan lain adalah mengatur ulang formulir menggunakan JavaScript tepat setelah formulir di HTML:

<form id="myForm">
  <input type="text" value="" name="myTextInput" />
</form>

<script type="text/javascript">
  document.getElementById("myForm").reset();
</script>
pmko
sumber
8

Pada dasarnya, ada dua cara untuk membersihkan cache:

<form autocomplete="off"></form>

atau

$('#Textfiledid').attr('autocomplete', 'off');
Anand Dwivedi
sumber
6

Ini berfungsi untuk saya di browser yang lebih baru:

autocomplete="new-password"
erikrunia
sumber