membuat kalkulasi pada add page
Assalamulaikum
saya ingin bertanya bagaimana membuat kalkulasi otomatis pada field contoh
total = harga x quantity.
apakah berfungsi juga pada edit page?
terima kasih
Wallaikumsallam
kalkulasi total bisa digunakan pada Add dan Edit, gunakan event Javascript onload
// Rumusan event seperti ini hanya bisa di gunakan pada Inline form saja//
const harga = document.querySelector('[name="harga"]');
const quantity = document.querySelector('[name="quantity"]');
const total = document.querySelector('[name="total"]');
function calculateTotal() {
const hargaValue = Number(harga?.value || 0);
const quantityValue = Number(quantity?.value || 0);
if (total) {
total.value = hargaValue * quantityValue;
}
}
if (total) {
total.readOnly = true;
}
harga?.addEventListener('input', calculateTotal);
quantity?.addEventListener('input', calculateTotal);
calculateTotal();
-================= Jika form Add/Edit dibuka sebagai Modal Popup, selector global kadang bisa mengambil field dari panel lain. Lebih aman gunakan scope modal: ======================
const form = document.querySelector('#modalForm_add') || document.querySelector('#modalForm_edit');
const harga = form?.querySelector('[name="harga"]');
const quantity = form?.querySelector('[name="quantity"]');
const total = form?.querySelector('[name="total"]');
function calculateTotal() {
const hargaValue = Number(harga?.value || 0);
const quantityValue = Number(quantity?.value || 0);
if (total) {
total.value = hargaValue * quantityValue;
}
}
if (total) {
total.readOnly = true;
}
harga?.addEventListener('input', calculateTotal);
quantity?.addEventListener('input', calculateTotal);
calculateTotal();
Semoga membantu... Terima kasih
grosstotal = total x discount/100
seperti nya masih ada field yang kurang. tapi baik akan coba kami bantu
ini berlaku pada modal add-edit form saja. coba gunakan rumus Add page after record add dan Edit pada event After record edit
const harga = form.querySelector('[name="harga"]');
const quantity = form.querySelector('[name="quantity"]');
const discount = form.querySelector('[name="discount"]');
const total = form.querySelector('[name="total"]');
const totalgross = form.querySelector('[name="totalgross"]');
function toNumber(value) {
return Number(String(value || '0').replace(/,/g, '')) || 0;
}
function calculate() {
const hargaValue = toNumber(harga?.value);
const quantityValue = toNumber(quantity?.value);
const discountValue = toNumber(discount?.value);
const totalValue = hargaValue * quantityValue;
const totalgrossValue = totalValue * discountValue / 100;
if (total) {
total.value = totalValue;
}
if (totalgross) {
totalgross.value = totalgrossValue;
}
}
if (total) {
total.readOnly = true;
}
if (totalgross) {
totalgross.readOnly = true;
}
harga?.addEventListener('input', calculate);
quantity?.addEventListener('input', calculate);
discount?.addEventListener('input', calculate);
harga?.addEventListener('keyup', calculate);
quantity?.addEventListener('keyup', calculate);
discount?.addEventListener('keyup', calculate);
calculate();
Silahkan coba kembali
Punya pertanyaan serupa? Masuk untuk membuat topik baru.