Как предотвратить автоматическую отправку формы внутри цикла - PullRequest
0 голосов
/ 26 апреля 2018

Я хочу получить некоторую информацию через форму в каждом цикле. Где у меня есть AJAX, чтобы сохранить эту информацию, а затем снова запросить информацию в следующем цикле подсчета. Но, к сожалению, он не работает, он сохраняет одну и ту же информацию для каждого счета. Поэтому я хочу предотвратить автоматическую отправку формы после однократной отправки. Поэтому, пожалуйста, помогите мне в этом, заранее спасибо!

for (var i = 0; i < checkboxArr.length; i++) {

            var quoteModal = document.getElementById('quoteModal');
                quoteModal.style.display = "block";
                getContextId = checkboxArr[i];

            $('#quote_pn').on('submit', function(e){

                e.preventDefault();

                var addTotalQuote = parseFloat($('.shipping').val()) / checkboxArr.length;

                $.ajax({
                    type        : "POST",
                    data        : {getContextId: getContextId},
                    url         : "<?php echo site_url(); ?>" + "/partnumber/read_table",
                    dataType    : "json",
                    success     : function(data) {
                        var margin = parseFloat($('.margin').val());
                        var shipping = parseFloat($('.shipping').val());

                        var percantage = margin / 100;

                        var ind_cost = parseFloat(data.unit_price);
                        var qty = parseInt($('#quote_pn .quantity').val());

                        var unit_sell_price = percantage * ind_cost;
                        var total_unit_price = unit_sell_price + ind_cost;

                        var grand_sell_total = total_unit_price * qty;

                        var ind_landedCost = grand_sell_total / qty;

                        addTotalQuote = addTotalQuote + grand_sell_total;

                        var customer = $('#quote_pn .customer').val(),
                            manufac = data.manufac,
                            part = data.part,
                            step_code = data.step_code,
                            date_code = data.date_code,
                            warranty = data.warranty,
                            desc = data.description,
                            fob = data.fob,
                            stock = data.stock,
                            condition = data.condit,
                            unit_price = ind_landedCost,
                            quantity = qty,
                            target = data.target,
                            indcost = ind_cost,
                            ship = shipping;

                            $.ajax({
                                type    : "POST",
                                data    : { customer: customer, manufac:manufac, part: part, step_code: step_code, date_code: date_code, warranty: warranty, desc: desc, fob: fob, stock: stock, condition: condition, unit_price: unit_price, qty: quantity, target: target, ind_cost: indcost, shipping: ship},
                                url     : "<?php echo site_url(); ?>" + "/partnumber/insert_new_quote",
                                success : function(XHR, status, response) {
                                    alert("Quote has been added!");
                                    quoteModal.style.display = "none";
                                    $('#quote_pn')[0].reset();
                                },
                                error: function (XHR, status, response) {
                                   alert(response);
                                }

                            });
                    },
                    error       : function (XHR, status, response) {
                       alert(response);
                    }
                });
            });
        }

1 Ответ

0 голосов
/ 26 апреля 2018

Вам также необходимо добавить e.stopImmediatePropagation() к коду.

e.preventDefault(); + e.stopImmediatePropagation(); остановит автоматическое введение.

альтернатива заключается в использовании return false;

...