• 23-04-2025, 16:48:40
    #1
    https://drive.google.com/file/d/1tJd...ew?usp=sharing

    Gönderim olduğum videoda input otomatik veri geliyor bu veri ara-toplama gelmiyor otomatik kendim güncelleme yaparsam gelmekte bu konuda yardımcı olabilir misiniz?

    <div class="row fiyat-toplama-row">
        <div class="col-sm-9"></div>
        <div class="col-sm-3">
            <div class="ara-toplam-row">Ara Toplam: <span class="ara-toplam">0,00</span> <span class="icon-ekstra-iskonto"><i class="fi fi-rr-plus"></i></span></div>
            <div class="ekstra-iskonto-row"></div>
            <div class="iskonto-row" id="iskontogoster" style="display: none;">İskonto: <span id="iskontoToplam">0.00</span></div>
            <div class="toplu-iskonto-row" id="topluIskontoGoster" style="display: none;">Toplu İskonto: <span id="topluIskontoDeger"></span></div>
            <div class="genel-toplam-row">Genel Toplam: <span id="genel-toplam">0,00</span></div>
        </div>
    </div>
    <script>
    document.addEventListener("DOMContentLoaded", function () {
        const araToplamSpan = document.querySelector(".ara-toplam");
        const genelToplamSpan = document.getElementById("genel-toplam");
        const discountValueInput = document.getElementById("discountValue");
        const discountTypeSelect = document.getElementById("discountType");
        const paraBirimiRadyolar = document.querySelectorAll('input[name="para"]');
        const addRowButton = document.getElementById("addRow");
        const tableBody = document.querySelector("tbody");
        const iskontoGosterDiv = document.getElementById("iskontogoster");
        const iskontoToplamSpan = document.getElementById("iskontoToplam");
        const topluIskontoGosterDiv = document.getElementById("topluIskontoGoster");
        const topluIskontoDegerSpan = document.getElementById("topluIskontoDeger");
        const ekstraIskontoIcon = document.querySelector(".icon-ekstra-iskonto");
        const ekstraIskontoRow = document.querySelector(".ekstra-iskonto-row");
        let ekstraIskontoInput;
        let ekstraIskontoLabel;
        function hesaplaAraToplam() {
            let araToplam = 0;
            const toplamFiyatiInputs = document.querySelectorAll("input[name='toplam-fiyati']");
            toplamFiyatiInputs.forEach(function (input) {
                let value = parseFloat(input.value.replace(/[^0-9.-]+/g, ""));
                araToplam += isNaN(value) ? 0 : value;
            });
            const selectedCurrency = document.querySelector('input[name="para"]:checked')?.value || "TL";
            let symbol = selectedCurrency === "TL" ? "₺" : selectedCurrency === "USD" ? "$" : "€";
            if (araToplamSpan) {
                araToplamSpan.textContent = araToplam.toLocaleString('tr-TR', { minimumFractionDigits: 2, maximumFractionDigits: 2 }) + " " + symbol;
            }
            return araToplam;
        }
        function hesaplaGenelToplam() {
            const araToplam = hesaplaAraToplam();
            let topluIskontoDeger = 0;
            let topluIskontoIndirimMiktari = 0;
            if (discountValueInput && discountValueInput.value) {
                topluIskontoDeger = parseFloat(discountValueInput.value.replace(/[^0-9.-]+/g, "")) || 0;
            }
            const topluIskontoTuru = discountTypeSelect ? discountTypeSelect.value : "%";
            if (topluIskontoDeger > 0) {
                topluIskontoGosterDiv.style.display = "block";
                const currency = document.querySelector('input[name="para"]:checked')?.value || "₺";
                if (topluIskontoTuru === "%") {
                    const gercekIskonto = Math.min(topluIskontoDeger, 100);
                    topluIskontoIndirimMiktari = (araToplam * gercekIskonto) / 100;
                    topluIskontoDegerSpan.textContent = "(%" + gercekIskonto + ") - " + topluIskontoIndirimMiktari.toLocaleString('tr-TR', { minimumFractionDigits: 2, maximumFractionDigits: 2 }) + " " + currency;
                } else if (topluIskontoTuru === "birim") {
                    topluIskontoIndirimMiktari = topluIskontoDeger;
                    topluIskontoDegerSpan.textContent = "(" + topluIskontoDeger.toLocaleString('tr-TR', { minimumFractionDigits: 2, maximumFractionDigits: 2 }) + " " + currency + ") - " + topluIskontoIndirimMiktari.toLocaleString('tr-TR', { minimumFractionDigits: 2, maximumFractionDigits: 2 }) + " " + currency;
                }
            } else {
                topluIskontoDegerSpan.textContent = "";
                topluIskontoGosterDiv.style.display = "none";
                topluIskontoIndirimMiktari = 0;
            }
            let ekstraIskonto = 0;
            if (ekstraIskontoInput && ekstraIskontoInput.value) {
                ekstraIskonto = parseFloat(ekstraIskontoInput.value.replace(/[^0-9.-]+/g, "")) || 0;
            }
            let genelToplam = araToplam - topluIskontoIndirimMiktari - ekstraIskonto;
            genelToplam = genelToplam < 0 ? 0 : genelToplam;
            if (genelToplamSpan) {
                genelToplamSpan.textContent = genelToplam.toLocaleString('tr-TR', { minimumFractionDigits: 2, maximumFractionDigits: 2 }) + " " + (document.querySelector('input[name="para"]:checked')?.value || "₺");
            }
        }
        function temizleBireyselIskontolar() {
            const rows = document.querySelectorAll('tbody tr');
            rows.forEach(row => {
                const iskontoInput = row.querySelector('.iskonto-td input[type="number"]');
                const iskontoTuruSelect = row.querySelector('.iskonto-td select.iskonto-turu');
                const iskontoMiktariSpan = row.querySelector('.iskonto-miktari');
                if (iskontoInput) iskontoInput.value = '';
                if (iskontoTuruSelect) iskontoTuruSelect.value = '%';
                if (iskontoMiktariSpan) iskontoMiktariSpan.textContent = '';
            });
            iskontoGosterDiv.style.display = "none";
            iskontoToplamSpan.textContent = "0.00";
        }
        document.addEventListener('input', function (event) {
            if (event.target && event.target.name === 'toplam-fiyati') {
                hesaplaAraToplam();
                hesaplaGenelToplam();
            } else if (event.target && event.target.id === 'discountValue') {
                temizleBireyselIskontolar();
                hesaplaAraToplam();
                hesaplaGenelToplam();
            } else if (event.target && event.target.id === 'ekstraIskontoValue') {
                hesaplaGenelToplam();
            }
        });
        document.addEventListener('change', function (event) {
            if (event.target && event.target.id === 'discountType') {
                temizleBireyselIskontolar();
                hesaplaAraToplam();
                hesaplaGenelToplam();
            } else if (event.target && event.target.name === 'para') {
                hesaplaAraToplam();
                hesaplaGenelToplam();
            }
        });
        if (addRowButton && tableBody) {
            addRowButton.addEventListener('click', function() {
                const newRow = tableBody.insertRow();
                const cell1 = newRow.insertCell();
                const cell2 = newRow.insertCell();
                cell1.textContent = "Yeni Ürün";
                cell2.innerHTML = '<input type="number" name="toplam-fiyati" value="0.00">';
            });
        }
        if (ekstraIskontoIcon && ekstraIskontoRow) {
            ekstraIskontoIcon.addEventListener('click', function() {
                if (!ekstraIskontoInput) {
                    ekstraIskontoLabel = document.createElement('label');
                    ekstraIskontoLabel.textContent = 'Ekstra İskonto:';
                    ekstraIskontoLabel.classList.add('me-2');
                    ekstraIskontoInput = document.createElement('input');
                    ekstraIskontoInput.type = 'number';
                    ekstraIskontoInput.id = 'ekstraIskontoValue';
                    ekstraIskontoInput.classList.add('form-control', 'd-inline-block', 'w-auto', 'ms-2');
                    ekstraIskontoInput.placeholder = 'İskonto Tutarı';
                    ekstraIskontoRow.appendChild(ekstraIskontoLabel);
                    ekstraIskontoRow.appendChild(ekstraIskontoInput);
                    ekstraIskontoInput.addEventListener('input', hesaplaGenelToplam);
                } else {
                    const visible = ekstraIskontoInput.style.display !== 'none';
                    ekstraIskontoLabel.style.display = visible ? 'none' : 'inline';
                    ekstraIskontoInput.style.display = visible ? 'none' : 'inline-block';
                }
            });
        }
        hesaplaAraToplam();
        hesaplaGenelToplam();
    });
    const toplamInput = row.querySelector("input[name='toplam-fiyati']");
    const adet = 2;
    const birimFiyat = 150;
    toplamInput.value = (adet * birimFiyat).toFixed(2);
    hesaplaAraToplam();
    hesaplaGenelToplam();
    </script>
  • 23-04-2025, 17:48:07
    #2
    Deneyip sonuç bildirir misin?

    <script>
    document.addEventListener("DOMContentLoaded", function () {
        const araToplamSpan = document.querySelector(".ara-toplam");
        const genelToplamSpan = document.getElementById("genel-toplam");
        const discountValueInput = document.getElementById("discountValue");
        const discountTypeSelect = document.getElementById("discountType");
        const paraBirimiRadyolar = document.querySelectorAll('input[name="para"]');
        const addRowButton = document.getElementById("addRow");
        const tableBody = document.querySelector("tbody");
        const iskontoGosterDiv = document.getElementById("iskontogoster");
        const iskontoToplamSpan = document.getElementById("iskontoToplam");
        const topluIskontoGosterDiv = document.getElementById("topluIskontoGoster");
        const topluIskontoDegerSpan = document.getElementById("topluIskontoDeger");
        const ekstraIskontoIcon = document.querySelector(".icon-ekstra-iskonto");
        const ekstraIskontoRow = document.querySelector(".ekstra-iskonto-row");
        let ekstraIskontoInput;
        let ekstraIskontoLabel;
    
        function setInputValueAndTrigger(inputElement, value) {
            inputElement.value = value;
            inputElement.dispatchEvent(new Event('input'));
        }
    
        function hesaplaAraToplam() {
            let araToplam = 0;
            const toplamFiyatiInputs = document.querySelectorAll("input[name='toplam-fiyati']");
            toplamFiyatiInputs.forEach(function (input) {
                let value = parseFloat(input.value.replace(/[^0-9.-]+/g, ""));
                araToplam += isNaN(value) ? 0 : value;
            });
            const selectedCurrency = document.querySelector('input[name="para"]:checked')?.value || "TL";
            let symbol = selectedCurrency === "TL" ? "₺" : selectedCurrency === "USD" ? "$" : "€";
            if (araToplamSpan) {
                araToplamSpan.textContent = araToplam.toLocaleString('tr-TR', { minimumFractionDigits: 2, maximumFractionDigits: 2 }) + " " + symbol;
            }
            return araToplam;
        }
    
        function hesaplaGenelToplam() {
            const araToplam = hesaplaAraToplam();
            let topluIskontoDeger = 0;
            let topluIskontoIndirimMiktari = 0;
            if (discountValueInput && discountValueInput.value) {
                topluIskontoDeger = parseFloat(discountValueInput.value.replace(/[^0-9.-]+/g, "")) || 0;
            }
            const topluIskontoTuru = discountTypeSelect ? discountTypeSelect.value : "%";
            if (topluIskontoDeger > 0) {
                topluIskontoGosterDiv.style.display = "block";
                const currency = document.querySelector('input[name="para"]:checked')?.value || "₺";
                if (topluIskontoTuru === "%") {
                    const gercekIskonto = Math.min(topluIskontoDeger, 100);
                    topluIskontoIndirimMiktari = (araToplam * gercekIskonto) / 100;
                    topluIskontoDegerSpan.textContent = "(%" + gercekIskonto + ") - " + topluIskontoIndirimMiktari.toLocaleString('tr-TR', { minimumFractionDigits: 2, maximumFractionDigits: 2 }) + " " + currency;
                } else if (topluIskontoTuru === "birim") {
                    topluIskontoIndirimMiktari = topluIskontoDeger;
                    topluIskontoDegerSpan.textContent = "(" + topluIskontoDeger.toLocaleString('tr-TR', { minimumFractionDigits: 2, maximumFractionDigits: 2 }) + " " + currency + ") - " + topluIskontoIndirimMiktari.toLocaleString('tr-TR', { minimumFractionDigits: 2, maximumFractionDigits: 2 }) + " " + currency;
                }
            } else {
                topluIskontoDegerSpan.textContent = "";
                topluIskontoGosterDiv.style.display = "none";
                topluIskontoIndirimMiktari = 0;
            }
    
            let ekstraIskonto = 0;
            if (ekstraIskontoInput && ekstraIskontoInput.value) {
                ekstraIskonto = parseFloat(ekstraIskontoInput.value.replace(/[^0-9.-]+/g, "")) || 0;
            }
    
            let genelToplam = araToplam - topluIskontoIndirimMiktari - ekstraIskonto;
            genelToplam = genelToplam < 0 ? 0 : genelToplam;
            if (genelToplamSpan) {
                genelToplamSpan.textContent = genelToplam.toLocaleString('tr-TR', { minimumFractionDigits: 2, maximumFractionDigits: 2 }) + " " + (document.querySelector('input[name="para"]:checked')?.value || "₺");
            }
        }
    
        function temizleBireyselIskontolar() {
            const rows = document.querySelectorAll('tbody tr');
            rows.forEach(row => {
                const iskontoInput = row.querySelector('.iskonto-td input[type="number"]');
                const iskontoTuruSelect = row.querySelector('.iskonto-td select.iskonto-turu');
                const iskontoMiktariSpan = row.querySelector('.iskonto-miktari');
                if (iskontoInput) iskontoInput.value = '';
                if (iskontoTuruSelect) iskontoTuruSelect.value = '%';
                if (iskontoMiktariSpan) iskontoMiktariSpan.textContent = '';
            });
            iskontoGosterDiv.style.display = "none";
            iskontoToplamSpan.textContent = "0.00";
        }
    
        document.addEventListener('input', function (event) {
            if (event.target && event.target.name === 'toplam-fiyati') {
                hesaplaAraToplam();
                hesaplaGenelToplam();
            } else if (event.target && event.target.id === 'discountValue') {
                temizleBireyselIskontolar();
                hesaplaAraToplam();
                hesaplaGenelToplam();
            } else if (event.target && event.target.id === 'ekstraIskontoValue') {
                hesaplaGenelToplam();
            }
        });
    
        document.addEventListener('change', function (event) {
            if (event.target && event.target.id === 'discountType') {
                temizleBireyselIskontolar();
                hesaplaAraToplam();
                hesaplaGenelToplam();
            } else if (event.target && event.target.name === 'para') {
                hesaplaAraToplam();
                hesaplaGenelToplam();
            }
        });
    
        if (addRowButton && tableBody) {
            addRowButton.addEventListener('click', function() {
                const newRow = tableBody.insertRow();
                const cell1 = newRow.insertCell();
                const cell2 = newRow.insertCell();
                cell1.textContent = "Yeni Ürün";
                cell2.innerHTML = '<input type="number" name="toplam-fiyati" value="0.00">';
            });
        }
    
        if (ekstraIskontoIcon && ekstraIskontoRow) {
            ekstraIskontoIcon.addEventListener('click', function() {
                if (!ekstraIskontoInput) {
                    ekstraIskontoLabel = document.createElement('label');
                    ekstraIskontoLabel.textContent = 'Ekstra İskonto:';
                    ekstraIskontoLabel.classList.add('me-2');
                    ekstraIskontoInput = document.createElement('input');
                    ekstraIskontoInput.type = 'number';
                    ekstraIskontoInput.id = 'ekstraIskontoValue';
                    ekstraIskontoInput.classList.add('form-control', 'd-inline-block', 'w-auto', 'ms-2');
                    ekstraIskontoInput.placeholder = 'İskonto Tutarı';
                    ekstraIskontoRow.appendChild(ekstraIskontoLabel);
                    ekstraIskontoRow.appendChild(ekstraIskontoInput);
                    ekstraIskontoInput.addEventListener('input', hesaplaGenelToplam);
                } else {
                    const visible = ekstraIskontoInput.style.display !== 'none';
                    ekstraIskontoLabel.style.display = visible ? 'none' : 'inline';
                    ekstraIskontoInput.style.display = visible ? 'none' : 'inline-block';
                }
            });
        }
    
        hesaplaAraToplam();
        hesaplaGenelToplam();
    
        // Örnek kullanım: input değeri set edip event tetiklemek
        const toplamInput = document.querySelector("input[name='toplam-fiyati']");
        const adet = 2;
        const birimFiyat = 150;
        if (toplamInput) {
            setInputValueAndTrigger(toplamInput, (adet * birimFiyat).toFixed(2));
        }
    });
    </script>
  • 24-04-2025, 14:20:25
    #3
    onurCC adlı üyeden alıntı: mesajı görüntüle
    Deneyip sonuç bildirir misin?

    <script>
    document.addEventListener("DOMContentLoaded", function () {
        const araToplamSpan = document.querySelector(".ara-toplam");
        const genelToplamSpan = document.getElementById("genel-toplam");
        const discountValueInput = document.getElementById("discountValue");
        const discountTypeSelect = document.getElementById("discountType");
        const paraBirimiRadyolar = document.querySelectorAll('input[name="para"]');
        const addRowButton = document.getElementById("addRow");
        const tableBody = document.querySelector("tbody");
        const iskontoGosterDiv = document.getElementById("iskontogoster");
        const iskontoToplamSpan = document.getElementById("iskontoToplam");
        const topluIskontoGosterDiv = document.getElementById("topluIskontoGoster");
        const topluIskontoDegerSpan = document.getElementById("topluIskontoDeger");
        const ekstraIskontoIcon = document.querySelector(".icon-ekstra-iskonto");
        const ekstraIskontoRow = document.querySelector(".ekstra-iskonto-row");
        let ekstraIskontoInput;
        let ekstraIskontoLabel;
    
        function setInputValueAndTrigger(inputElement, value) {
            inputElement.value = value;
            inputElement.dispatchEvent(new Event('input'));
        }
    
        function hesaplaAraToplam() {
            let araToplam = 0;
            const toplamFiyatiInputs = document.querySelectorAll("input[name='toplam-fiyati']");
            toplamFiyatiInputs.forEach(function (input) {
                let value = parseFloat(input.value.replace(/[^0-9.-]+/g, ""));
                araToplam += isNaN(value) ? 0 : value;
            });
            const selectedCurrency = document.querySelector('input[name="para"]:checked')?.value || "TL";
            let symbol = selectedCurrency === "TL" ? "₺" : selectedCurrency === "USD" ? "$" : "€";
            if (araToplamSpan) {
                araToplamSpan.textContent = araToplam.toLocaleString('tr-TR', { minimumFractionDigits: 2, maximumFractionDigits: 2 }) + " " + symbol;
            }
            return araToplam;
        }
    
        function hesaplaGenelToplam() {
            const araToplam = hesaplaAraToplam();
            let topluIskontoDeger = 0;
            let topluIskontoIndirimMiktari = 0;
            if (discountValueInput && discountValueInput.value) {
                topluIskontoDeger = parseFloat(discountValueInput.value.replace(/[^0-9.-]+/g, "")) || 0;
            }
            const topluIskontoTuru = discountTypeSelect ? discountTypeSelect.value : "%";
            if (topluIskontoDeger > 0) {
                topluIskontoGosterDiv.style.display = "block";
                const currency = document.querySelector('input[name="para"]:checked')?.value || "₺";
                if (topluIskontoTuru === "%") {
                    const gercekIskonto = Math.min(topluIskontoDeger, 100);
                    topluIskontoIndirimMiktari = (araToplam * gercekIskonto) / 100;
                    topluIskontoDegerSpan.textContent = "(%" + gercekIskonto + ") - " + topluIskontoIndirimMiktari.toLocaleString('tr-TR', { minimumFractionDigits: 2, maximumFractionDigits: 2 }) + " " + currency;
                } else if (topluIskontoTuru === "birim") {
                    topluIskontoIndirimMiktari = topluIskontoDeger;
                    topluIskontoDegerSpan.textContent = "(" + topluIskontoDeger.toLocaleString('tr-TR', { minimumFractionDigits: 2, maximumFractionDigits: 2 }) + " " + currency + ") - " + topluIskontoIndirimMiktari.toLocaleString('tr-TR', { minimumFractionDigits: 2, maximumFractionDigits: 2 }) + " " + currency;
                }
            } else {
                topluIskontoDegerSpan.textContent = "";
                topluIskontoGosterDiv.style.display = "none";
                topluIskontoIndirimMiktari = 0;
            }
    
            let ekstraIskonto = 0;
            if (ekstraIskontoInput && ekstraIskontoInput.value) {
                ekstraIskonto = parseFloat(ekstraIskontoInput.value.replace(/[^0-9.-]+/g, "")) || 0;
            }
    
            let genelToplam = araToplam - topluIskontoIndirimMiktari - ekstraIskonto;
            genelToplam = genelToplam < 0 ? 0 : genelToplam;
            if (genelToplamSpan) {
                genelToplamSpan.textContent = genelToplam.toLocaleString('tr-TR', { minimumFractionDigits: 2, maximumFractionDigits: 2 }) + " " + (document.querySelector('input[name="para"]:checked')?.value || "₺");
            }
        }
    
        function temizleBireyselIskontolar() {
            const rows = document.querySelectorAll('tbody tr');
            rows.forEach(row => {
                const iskontoInput = row.querySelector('.iskonto-td input[type="number"]');
                const iskontoTuruSelect = row.querySelector('.iskonto-td select.iskonto-turu');
                const iskontoMiktariSpan = row.querySelector('.iskonto-miktari');
                if (iskontoInput) iskontoInput.value = '';
                if (iskontoTuruSelect) iskontoTuruSelect.value = '%';
                if (iskontoMiktariSpan) iskontoMiktariSpan.textContent = '';
            });
            iskontoGosterDiv.style.display = "none";
            iskontoToplamSpan.textContent = "0.00";
        }
    
        document.addEventListener('input', function (event) {
            if (event.target && event.target.name === 'toplam-fiyati') {
                hesaplaAraToplam();
                hesaplaGenelToplam();
            } else if (event.target && event.target.id === 'discountValue') {
                temizleBireyselIskontolar();
                hesaplaAraToplam();
                hesaplaGenelToplam();
            } else if (event.target && event.target.id === 'ekstraIskontoValue') {
                hesaplaGenelToplam();
            }
        });
    
        document.addEventListener('change', function (event) {
            if (event.target && event.target.id === 'discountType') {
                temizleBireyselIskontolar();
                hesaplaAraToplam();
                hesaplaGenelToplam();
            } else if (event.target && event.target.name === 'para') {
                hesaplaAraToplam();
                hesaplaGenelToplam();
            }
        });
    
        if (addRowButton && tableBody) {
            addRowButton.addEventListener('click', function() {
                const newRow = tableBody.insertRow();
                const cell1 = newRow.insertCell();
                const cell2 = newRow.insertCell();
                cell1.textContent = "Yeni Ürün";
                cell2.innerHTML = '<input type="number" name="toplam-fiyati" value="0.00">';
            });
        }
    
        if (ekstraIskontoIcon && ekstraIskontoRow) {
            ekstraIskontoIcon.addEventListener('click', function() {
                if (!ekstraIskontoInput) {
                    ekstraIskontoLabel = document.createElement('label');
                    ekstraIskontoLabel.textContent = 'Ekstra İskonto:';
                    ekstraIskontoLabel.classList.add('me-2');
                    ekstraIskontoInput = document.createElement('input');
                    ekstraIskontoInput.type = 'number';
                    ekstraIskontoInput.id = 'ekstraIskontoValue';
                    ekstraIskontoInput.classList.add('form-control', 'd-inline-block', 'w-auto', 'ms-2');
                    ekstraIskontoInput.placeholder = 'İskonto Tutarı';
                    ekstraIskontoRow.appendChild(ekstraIskontoLabel);
                    ekstraIskontoRow.appendChild(ekstraIskontoInput);
                    ekstraIskontoInput.addEventListener('input', hesaplaGenelToplam);
                } else {
                    const visible = ekstraIskontoInput.style.display !== 'none';
                    ekstraIskontoLabel.style.display = visible ? 'none' : 'inline';
                    ekstraIskontoInput.style.display = visible ? 'none' : 'inline-block';
                }
            });
        }
    
        hesaplaAraToplam();
        hesaplaGenelToplam();
    
        // Örnek kullanım: input değeri set edip event tetiklemek
        const toplamInput = document.querySelector("input[name='toplam-fiyati']");
        const adet = 2;
        const birimFiyat = 150;
        if (toplamInput) {
            setInputValueAndTrigger(toplamInput, (adet * birimFiyat).toFixed(2));
        }
    });
    </script>
    hayrı sistem js çalışmadı.