javascript - 如何防止在for循环中自动提交表单
问题描述
我想通过每个循环计数中的表格获取一些信息。我有 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);
}
});
});
}
解决方案
您还需要添加e.stopImmediatePropagation()
到代码中。
e.preventDefault();
+e.stopImmediatePropagation();
将停止自动汇总。
另一种方法是使用return false;
推荐阅读
- maven - 如何使用黄瓜配置文件动态使用不同的环境主机名、testdata、testGroup。我正在使用黄瓜、java、maven
- ios - CAShapeLayer 笔触看起来已重置
- c# - CellFormating 事件:更改字体行的行为类似于循环
- function - 为什么 Haskell 假定返回的 monad 类型与作为参数传递的类型相同?
- ios - Swift - 向下滚动后向上滚动时,tableView Cell 中的 ImageView 消失
- javascript - 如何防止 webgl 在每帧绘制时清理画布
- c# - 如何正确暂停 Rebus 接收消息?
- c# - unity 使可移动精灵可点击
- sql - 在存储过程中创建具有角色的用户
- php - 如何像这样从3个表中查询