Bagaimana Anda mempertahankan nilai formulir setelah mengirimkan dalam javascript?

Halo Pengembang, Jika Anda perlu menyimpan nilai formulir setelah mengirimkan dalam PHP maka Anda berada di tempat yang tepat. Di sini, saya akan memberi tahu Anda metode terbaik untuk mengimplementasikan fitur ini di formulir Anda

Setelah Anda belajar untuk menyimpan nilai bidang input setelah mengirimkan formulir. Anda dapat dengan mudah menerapkannya di formulir pendaftaran formulir login Anda, & lainnya

Jangan hapus Formulir setelah mengirimkan dalam PHP

Sekarang pertanyaannya adalah Mengapa perlu - tidak menghapus formulir setelah memasukkan nilai input?

Jadi, Mari kita ketahui dengan contoh sederhana berikut –

Seperti yang Anda ketahui ketika Anda mengklik tombol kirim maka halaman web akan dimuat ulang dan semua nilai input formulir akan diatur ke nilai default atau kosong

Jika Anda telah membuat formulir pendaftaran dan menambahkan validasi. Ketika validasi beberapa kolom input gagal setelah mengklik tombol kirim, maka nilai yang valid dan tidak valid akan dihapus. Setelah itu, Anda harus memasukkan kembali nilainya. Jadi, itu tidak baik dari sudut pandang pengguna

Jika Anda menerapkan fitur untuk menyimpan semua nilai kolom input setelah pengiriman formulir, maka Anda hanya dapat mengubah nilai yang tidak valid

Saya sedang mengerjakan proyek fase 3 saya untuk Flatiron School di mana saya harus membangun elemen <form> di sisi front-end. Seperti yang sudah Anda ketahui, formulir biasanya berisi <input> elemen dengan atribut value

Satu hal yang saya sadari ketika saya menguji mengirimkan <form> saya, nilai formulir saya tidak akan dipertahankan saat browser memuat ulang

Mungkin sepele jika formulir memiliki sangat sedikit <input> tetapi bagaimana jika Anda perlu membuat formulir yang membuat profil seseorang dengan menggunakan informasi mereka seperti riwayat pekerjaan sebelumnya atau informasi latar belakang pribadi yang membutuhkan setidaknya 100-200 kata

Terlepas dari berapa banyak input yang harus dimiliki formulir, formulir yang mempertahankan nilainya dalam keadaan yang tidak terduga lebih ideal daripada tidak mampu mempertahankan nilainya menurut pendapat saya

Untuk mencegah kejadian ini, saya menghabiskan beberapa waktu mencari solusi untuk masalah tersebut dan seperti biasa. MDN Web Docs sudah memiliki jawabannya

Artikel panjang scrollbar pendek tentang sessionStorage


Sesi halaman berlangsung selama tab atau browser terbuka, dan bertahan selama pemuatan ulang dan pemulihan halaman

Menurut artikel tersebut, salah satu fitur sessionStorage melakukan persis seperti yang saya cari. Saya mengujinya di Developer Tools saya

Bagaimana Anda mempertahankan nilai formulir setelah mengirimkan dalam javascript?

sessionStorage.setItem("thisIsKeyName", "this is value stored in sessionStorage")_ mengambil dua argumen. Argumen pertama adalah nama kunci untuk nilai Anda, argumen kedua adalah nilai yang ingin Anda simpan di sessionStorage


Bagaimana Anda mempertahankan nilai formulir setelah mengirimkan dalam javascript?
Buka Developer Tools, klik tab Application dan di sisi kiri, Anda dapat memeriksa nilai tersimpan di Session Storage (a <input>0 dan value. itu adalah <input>_2. )

Untuk mendapatkan nilai tersimpan sesi Anda, cukup tetapkan ke variabel

Bagaimana Anda mempertahankan nilai formulir setelah mengirimkan dalam javascript?

Apa pun nilainya, setelah berada di sessionStorage, browser Anda tidak akan kehilangannya, Anda juga dapat menggunakan nilainya nanti seperti Anda mengeluarkannya dari "penyimpanan" saat Anda membutuhkannya

Setiap kali pengguna menambahkan beberapa data yang tidak valid ke formulir dan mengirimkannya, halaman harus disegarkan untuk menampilkan kesalahan, jika Anda tidak menggunakan JavaScript atau semacamnya

Kabar buruknya adalah data input akan hilang, yang bisa sangat mengganggu, apalagi jika form memiliki banyak field

Untungnya, ada dua metode sederhana yang dapat Anda gunakan

Ini hanya berfungsi saat pengiriman, baik berhasil atau tidak berhasil (jika kesalahan validasi dipicu). Itu tidak berfungsi pada penyegaran halaman sederhana (F5) jika data belum dikirimkan terlebih dahulu. Anda memerlukan beberapa JavaScript untuk itu

1. Simpan Formulir Data di Refresh Menggunakan PHP Ternary Operator

Operator ternary adalah versi yang lebih pendek dan praktis dari pernyataan if/else standar

Ini digunakan seperti ini

<?php $a ? $b : $c;

Ini diterjemahkan menjadi sesuatu seperti ini

<?php
    if ($a) {
        // do $b
        $b;
    } else {
    // do $c
        $c;
    }
_

Jadi, untuk menggunakan ini dalam formulir untuk mengingat data setelah pengguna menekan kirim dan halaman disegarkan, Anda harus menambahkan ini di atribut

<?php
    if ($a) {
        // do $b
        $b;
    } else {
    // do $c
        $c;
    }
1 input

<?php echo isset($_POST['name']) ? htmlspecialchars($_POST['name'], ENT_QUOTES) : ''; ?>

Anda harus membungkus hasilnya dalam htmlspecialchars() untuk keamanan

Jadi, tag HTML masukan akan terlihat seperti ini

<input name="name" type="text" value="<?php echo isset($_POST['name']) ? htmlspecialchars($_POST['name'], ENT_QUOTES) : ''; ?>">
_

Apa yang dilakukan adalah menampilkan data di bidang

<?php
    if ($a) {
        // do $b
        $b;
    } else {
    // do $c
        $c;
    }
2 jika disetel (ditambahkan oleh pengguna). Jika tidak, biarkan kosong

2. Simpan Data Formulir di Refresh dengan PHP Null Coalescing Operator

Di PHP 7, operator penggabungan nol diperkenalkan, yang setara dengan operator ternary, tetapi lebih pendek

Ini

<?php echo $_POST['name'] ?? ''; ?>
_

setara dengan ini

<?php echo isset($_POST['name']) ? $_POST['name'] : ''; ?>

Jadi, untuk menyimpan input data pada submit dan refresh, gunakan di atribut

<?php
    if ($a) {
        // do $b
        $b;
    } else {
    // do $c
        $c;
    }
1, seperti ini

<input type="text" name="name" value="<?php echo $_POST['name'] ?? ''; ?>">
_

Tapi, sekali lagi, Anda harus menggunakan

<?php
    if ($a) {
        // do $b
        $b;
    } else {
    // do $c
        $c;
    }
_4 untuk keamanan

<input type="text" name="name" value="<?php echo htmlspecialchars($_POST['name'] ?? '', ENT_QUOTES); ?>">

Perhatikan bahwa Anda harus menambahkan operator di dalam fungsi

<?php
    if ($a) {
        // do $b
        $b;
    } else {
    // do $c
        $c;
    }
4. Jika tidak, Anda akan mendapatkan kesalahan "Indeks tidak terdefinisi".

Anda Tidak Dapat Selalu Memanfaatkan Atribut Nilai HTML

Ada kasus di mana Anda tidak dapat menggunakan atribut

<?php
    if ($a) {
        // do $b
        $b;
    } else {
    // do $c
        $c;
    }
1 untuk menambahkan operator ternary atau penggabungan. Jadi, Anda harus lebih kreatif

Mari kita ambil tag HTML

<?php
    if ($a) {
        // do $b
        $b;
    } else {
    // do $c
        $c;
    }
_7 sebagai contoh, di mana Anda harus menggunakan nilai untuk
<?php
    if ($a) {
        // do $b
        $b;
    } else {
    // do $c
        $c;
    }
8

Agar data tetap diperbarui dalam tag

<?php
    if ($a) {
        // do $b
        $b;
    } else {
    // do $c
        $c;
    }
_7 dengan PHP, Anda dapat menggunakan atribut HTML
<?php echo isset($_POST['name']) ? htmlspecialchars($_POST['name'], ENT_QUOTES) : ''; ?>
0, yang membuat
<?php echo isset($_POST['name']) ? htmlspecialchars($_POST['name'], ENT_QUOTES) : ''; ?>
1 dipilih secara default

Jadi, Anda harus menambahkan sesuatu seperti ini di tag

<?php echo isset($_POST['name']) ? htmlspecialchars($_POST['name'], ENT_QUOTES) : ''; ?>
1

<?php echo (isset($_POST['select']) && $_POST['select'] === 'option1') ? 'selected' : ''; ?>

Jika

<?php
    if ($a) {
        // do $b
        $b;
    } else {
    // do $c
        $c;
    }
_7 memiliki nilai, dan jika itu sama dengan nilai
<?php echo isset($_POST['name']) ? htmlspecialchars($_POST['name'], ENT_QUOTES) : ''; ?>
1, maka gema
<?php echo isset($_POST['name']) ? htmlspecialchars($_POST['name'], ENT_QUOTES) : ''; ?>
0, jika tidak, jangan gema apa pun

Inilah keseluruhan bagiannya

<select name="select" id="">
    <option value="">Select</option>
    <option value="option1" <?php echo (isset($_POST['select']) && $_POST['select'] === 'option1') ? 'selected' : ''; ?>>Option 1</option>
    <option value="option2" <?php echo (isset($_POST['select']) && $_POST['select'] === 'option2') ? 'selected' : ''; ?>>Option 2</option>
</select>

Hati-hati dengan

<?php echo isset($_POST['name']) ? htmlspecialchars($_POST['name'], ENT_QUOTES) : ''; ?>
_6

Tidak seperti input,

<?php echo isset($_POST['name']) ? htmlspecialchars($_POST['name'], ENT_QUOTES) : ''; ?>
_6 memiliki tag penutup.
<?php echo isset($_POST['name']) ? htmlspecialchars($_POST['name'], ENT_QUOTES) : ''; ?>
8

Jadi, Anda perlu meletakkan operator PHP di antara tag, bukan di dalam

<?php
    if ($a) {
        // do $b
        $b;
    } else {
    // do $c
        $c;
    }
_0

Saya membuat kesalahan ini, tentu saja. 😃

Ini Tidak Akan Berfungsi untuk Input File

Metode di atas tidak akan berfungsi untuk input File, karena alasan keamanan

Dan saya tidak mengetahui adanya solusi lain dengan PHP. Mungkin dengan beberapa Javascript

Jadi, pengguna harus mengunggah file lagi jika halaman disegarkan tetapi formulir tidak berhasil dikirim

Itu Bungkus

Saya harap Anda menemukan posting yang bermanfaat dan komprehensif

Jika ada info yang kedaluwarsa atau salah, atau ada yang ingin Anda tambahkan, katakan, atau tanyakan, silakan hubungi saya melalui Twitter atau email

Bagaimana Anda mempertahankan nilai formulir setelah mengirimkan dalam javascript?

Tentang Radu

Saya telah bekerja online, dari rumah, selama lebih dari 9 tahun. Saya belajar banyak hal berbeda yang terkait dengan situs web. Keahlian utama saya adalah WordPress, tetapi untuk beberapa waktu, saya mulai lebih fokus pada pengembangan web

Bagaimana cara menjaga nilai setelah mengirimkan dalam JavaScript?

Untuk mempertahankan nilainya, Anda harus mengisi nilai di server saat merender halaman. Biasanya, Anda cukup menyalin data dari parameter permintaan HTML ke dalam bidang. Biasanya, Anda tidak bisa begitu saja menyalin parameter permintaan HTML ke dalam bidang

Bagaimana Anda menjaga nilai setelah mengirimkan formulir?

PHP - Menyimpan Nilai dalam Formulir . nama, email, dan situs web add a little PHP script inside the value attribute of the following input fields: name, email, and website . Di kolom textarea komentar, kami menempatkan skrip di antara tag . . . . . . . . . . . . . . . . .

Bagaimana cara mencegah reset formulir setelah mengirimkan JavaScript?

Menggunakan nilai "return false". . Memberikan nilai ini ke acara membuat formulir tidak menghasilkan apa-apa dan mencegahnya dari pengiriman serta menyegarkan browser. giving the "return false;" value to the onsubmit event. Giving this value to the event makes the form return nothing and prevent it from submission as well as refreshing the browser.

Bagaimana Anda menyimpan data formulir?

Pertahankan Penyegaran Data Formulir Menggunakan PHP Ternary Operator . . '';