Mengakses array di dalam objek yang ada di dalam function

Ada yg bisa bantu mengenai soal dibawah? Yang bermasalah di fungsi validateFormData() dan submit()
1. Buat sebuah fungsi bernama validateFormData yang menerima 1 argument objek dengan properti:

  • firstName
  • lastName
  • city
  • zipCode
Kembalikan true jika:

  • objek mempunyai semua properti di atas, dan
  • masing-masing properti di objek mempunyai nilai, dan
  • nilai dari properti zipCode harus dalam bentuk angka, dan
  • attribute checked dari <input> dengan id check harus true
Jika tidak, kembalikan false

Hint: Gunakan fungsi isLength, isNumber dan checkboxIsChecked

2. Buat sebuah fungsi bernama submit dan panggil fungsi ini ketika <form> disubmit.

Panggil fungsi validateFormData di fungsi submit tersebut, dan apabila validateFormData mengembalikan nilai false, maka fungsi submit akan menampilkan teks Periksa form anda sekali lagi di <div> dengan id warning. Jika validateFormData mengembalikan nilai true, maka teks di dalam <div> dengan id warning akan dihapus.
// Tambahkan kode JavaScript kalian di file ini

//let arr = [];
let pesan = document.getElementById("warning");
let tombol = document.getElementById("submit-form-button");

function getFormData() {
    let obj = {
        firstName: document.getElementById("first-name").value,
        lastName: document.getElementById("last-name").value,
        city: document.getElementById("city").value,
        zipCode: document.getElementById("zip-code").value,
        check: document.getElementById("check").checked
    }
    return obj;
}

function isNumber(string) {
    return !isNaN(string);
}

function isLength(string, integer) {
    return string.length == integer;
}

function checkboxIsChecked() {
    return check.checked;
}

function validateFormData() {
    //const object = {
    //    firstName: isLength,
    //    lastName: isLength,
    //    city: isLength,
    //    zipCode: isLength
    //}
    //arr.push(object);

    //const arr = ['firstName','lastName','city','zipCode'];
    //const zip = object.zipCode;

    let obyek = {
        arr: ['firstName', 'lastName', 'city', 'zipCode']
    }

    if (isLength(obyek, 4) == true && isNumber(arr[3]) == true && checkboxIsChecked() == true) {
        return true;
    } else {
        return false;
    }
}

function resetForm() {
    document.forms[0].reset();
}
//submitFormButton.onclick = resetForm();

function submit() {
    if (validateFormData() == false) {
        pesan.innerHTML = "Periksa form anda sekali lagi";
    } else {
        pesan.innerHTML = "";
    }
}

//document.getElementById("submit-form-button").addEventListener("click", obj);

avatar aiiaulia

@aiiaulia

5 Kontribusi 4 Poin


Jawaban

Hi @aiiaulia,
semoga membantu
function validateFormData(obj) {
  const properties = ['firstName', 'lastName', 'city', 'zipCode']
  const checkedInput = document.getElementById('input').checked
  
  properties.forEach((p) => {
    // objek mempunyai semua properti di atas
    if (!(p in obj)) {
    	return false
    }
    
    // masing-masing properti di objek mempunyai nilai
    if (obj[p] === undefined) {
    	return false
    }
    
    // nilai dari properti zipCode harus dalam bentuk angka
    if (isNaN(obj[p])) {
    	return false
    }
  })
  
  // attribute checked dari <input> dengan id check harus true
  if (!checkedInput) {
    return false
  }
  
  return true
}

function submit() {
  const obj = {} // ini terserah ambil dari mana
  let message = ''
  
  if (!validateFormData(obj)) {
  	message = 'Periksa form anda sekali lagi'
  }
}
avatar apake1

@apake1

106 Kontribusi 55 Poin


terimakasih ka sebelumnya, sudah sy koreksi utk validate menjadi seperti iniΒ 

if (isLength(obyek) == true && isNumber(obyek.zipCode) == true && checkboxIsChecked() == true) {return true;} else {return false;}

tp utk submit masih error
avatar aiiaulia

@aiiaulia

5 Kontribusi 4 Poin


Login untuk gabung berdiskusi