Recent Posts

    PWEB A - Pencarian Kode Pos

    Baca Juga

    Nama: Abd. Wahid

    NRP : 5025201039

    Kelas: PWEB A (2022)

    Tugas: Website Pencarian Kode Pos

    Repository: Link



    Pada tugas ini, kami diminta untuk membuat sebuah web yang menampilkan kode pos suatu tempat dengan nilai input berupa nama provinsi, nama kabupaten, dan nama kecamatan. Pada tugas kali ini, saya membuat web pencarian kode pos dengan menggunakan HTML, CSS, Javascript, dan beberapa library Javascript. Beberapa library javascript yang saya gunakan yaitu: jquery dan select2. Library tersebut saya gunakan untuk mempermudah proses fetching data dari API dan mempermudah mengelola DOM. Berikut adalah screenshot pekerjaan saya: 



    Source Code


    <!DOCTYPE html>
    <html lang="en">
    <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <link rel="stylesheet" href="css/style.css" />
    <link
    href="https://cdn.jsdelivr.net/npm/select2@4.1.0-rc.0/dist/css/select2.min.css"
    rel="stylesheet"
    />
    <title>Cari Kode Pos</title>
    </head>
    <body>
    <main class="main">
    <div class="container">
    <div class="form-container">
    <div class="form-title">
    <h1>Pencarian Kode Pos</h1>
    </div>
    <form action="" class="form">
    <div>
    <label for="provinsi" class="formlabel">Provinsi</label>
    <select name="provinsi" id="provinsi"></select>
    </div>
    <div>
    <label for="kabupaten" class="formlabel">Kabupaten</label>
    <select name="kabupaten" id="kabupaten"></select>
    </div>
    <div>
    <label for="kecamatan" class="formlabel">Kecamatan</label>
    <select name="kecamatan" id="kecamatan"></select>
    </div>
    <div>
    <label for="kodepos">Kode Pos</label>
    <input type="text" value="" class="kodeposres" disabled />
    </div>
    </form>
    </div>
    </div>
    </main>
    </body>
    <script
    src="https://code.jquery.com/jquery-3.6.1.min.js"
    integrity="sha256-o88AwQnZB+VDvE9tvIXrMQaPlFFSUTR+nldQm1LuPXQ="
    crossorigin="anonymous"
    ></script>
    <script src="https://cdn.jsdelivr.net/npm/select2@4.1.0-rc.0/dist/js/select2.min.js"></script>
    <script>
    let provinces = [];
    $.ajax({
    url: "https://ibnux.github.io/data-indonesia/provinsi.json",
    success: function (datas) {
    provinces = $.map(datas, function (obj) {
    obj.id = obj.id;
    obj.text = obj.nama;
    return obj;
    });
    },
    async: false,
    });
    $("#provinsi").select2({
    placeholder: "Pilih Provinsi",
    width: "100%",
    data: provinces,
    });
    $("#provinsi").append(
    $("<option selected></option>").val(null).text("Pilih Provinsi")
    );
    $("#kabupaten").select2({
    placeholder: "Pilih Kota",
    width: "100%",
    });
    $("#kecamatan").select2({
    placeholder: "Pilih Kecamatan",
    width: "100%",
    });
    $("#provinsi").on("change", function (e, data) {
    $(".kodeposres").val("");
    var idProv = $(this).val();
    if(!idProv){
    return;
    }
    var baseUrl =
    "https://ibnux.github.io/data-indonesia/kabupaten/" + idProv + ".json";
    var kota = [];
    removeOptions(document.getElementById("kabupaten"));
    $.ajax({
    url: baseUrl,
    dataType: "json",
    success: function (datas) {
    var kota = $.map(datas, function (obj) {
    obj.id = obj.id;
    obj.text = obj.nama;
    return obj;
    });
    $("#kabupaten").select2({
    placeholder: "Pilih Kota",
    width: "100%",
    data: kota,
    });
    var $nullOption = $("<option selected></option>")
    .val(null)
    .text("Pilih Kota/Kabupaten");
    $("#kabupaten").append($nullOption).trigger("change");
    if (data)
    $("#kabupaten")
    .val(data.kota)
    .trigger("change", [{ kecamatan: data.kecamatan }]);
    },
    error: function (xhr, ajaxOptions, thrownError) {
    console.log(xhr.responseText);
    },
    });
    });
    $("#kabupaten").on("change", function (e, data) {
    $(".kodeposres").val("");
    var idKota = $(this).val();
    if(!idKota) {
    return;
    }
    var baseUrl =
    "https://ibnux.github.io/data-indonesia/kecamatan/" + idKota + ".json";
    var kec = [];
    removeOptions(document.getElementById("kecamatan"));
    $.ajax({
    url: baseUrl,
    dataType: "json",
    success: function (datas) {
    var kec = $.map(datas, function (obj) {
    obj.id = obj.id;
    obj.text = obj.nama.toUpperCase();
    return obj;
    });
    $("#kecamatan").select2({
    placeholder: "Pilih Kecamatan",
    width: "100%",
    data: kec,
    });
    var $nullOption = $("<option selected></option>")
    .val(null)
    .text("Pilih Kecamatan");
    $("#kecamatan").append($nullOption);
    },
    error: function (xhr, ajaxOptions, thrownError) {
    console.log(xhr.responseText);
    },
    });
    });
    $("#kecamatan").on("change", function (e) {
    $(".kodeposres").val("Menunggu respons server...");
    let selectedProv = $("#provinsi").select2("data")[0].text;
    let selectedKab = $("#kabupaten").select2("data")[0].text;
    let selectedKecamatan = $(this).select2("data")[0].text;
    selectedKab = selectedKab.includes("KAB. ")
    ? selectedKab.replace("KAB. ", "")
    : selectedKab.replace("KOTA ", "");
    let kodepos = "";
    if (selectedKecamatan) {
    $.ajax({
    url: encodeURI(
    "https://kodepos.vercel.app/search?q=" +
    selectedKecamatan +
    " " +
    selectedKab +
    " " +
    selectedProv
    ),
    success: function (datas) {
    if (datas.status === true) {
    $(".kodeposres").val(datas.data[0].postalcode);
    }
    },
    async: true,
    });
    }
    });
    function removeOptions(selectbox) {
    var i;
    for (i = selectbox.options.length - 1; i >= 0; i--) {
    selectbox.remove(i);
    }
    }
    </script>
    </html>

    @import url(normalize.css);
    @import url('https://fonts.googleapis.com/css2?family=Poppins&display=swap');
    .main {
    width: 100%;
    min-height: 100vh;
    background: rgb(165, 84, 8);
    background: linear-gradient(30deg, rgb(207, 173, 79) 0%, rgb(187, 125, 10) 100%);
    display: flex;
    justify-content: space-between;
    align-items: center;
    font-family: "Poppins";
    }
    .container {
    width: 120%;
    padding: 0 20px;
    display: flex;
    justify-content: center;
    align-items: center;
    }
    .form-container {
    width: 100%;
    background-color: rgb(255, 255, 255);
    border-radius: 30px;
    padding: 60px 30px;
    }
    .form {
    width: 100%;
    }
    .form > div {
    margin-top: 1rem;
    }
    .form-title {
    display: flex;
    width: 100%;
    justify-content: center;
    align-items: center;
    }
    .form-title h1 {
    font-size: 30px;
    font-weight: bold;
    text-align: center;
    }
    .kodeposres {
    background: none;
    box-sizing: border-box;
    height: 28px;
    border-radius: 4px;
    border: 1px solid #aaa;
    width: 100%;
    padding: 0px 8px;
    color: rgb(0, 0, 0);
    }
    @media (min-width: 1024px) {
    .form-container {
    width: 60%;
    padding: 60px 50px;
    }
    }
    view raw postcode - css hosted with ❤ by GitHub

    Artikel Terkait

    Belum ada Komentar untuk "PWEB A - Pencarian Kode Pos"

    Posting Komentar

    Iklan Atas Artikel

    Iklan Tengah Artikel 1

    Iklan Tengah Artikel 2

    Iklan Bawah Artikel