弹出循环:添加数据时停止重复/三次应用/X
Pop-up Loop: Stop Duplication/Triplication/X When Adding Data
在弹出表单中添加数据时,有人能帮助我跟踪导致重复/三倍化/x的代码行吗?除了添加之外,新增/更新/删除功能都可以。
这种情况是,当我添加数据时,它应该保存一次(以前很好),但现在保存两次或三次(例如,我们现在有两个相同的数据副本)。。当我添加另一个数据时,它现在保存了之前保存的数据数量的x2或x3(所以我们现在又有4个相同的数据副本)。。见鬼!它假设只保存2个唯一的数据对吗?但我们现在有2+4个相同的数据副本。请帮忙。。
这是html文件:
<div id="man_contact_person">
<form id="form_client_contact" action="" method="post">
<span id="client_d_result"></span>
<table class="children_table">
<th>
<tr style="font-weight:bold">
<td style="width: 10px"></td>
<td>Person</td>
<td>Position</td>
<td>Contact No</td>
<td>Archive?</td>
<td></td>
</tr>
<tr>
<td><input type="hidden" id="client_d_id" name="client_d_id" /><input type="hidden" id="client_h_id" name="client_h_id" /></td>
<td><input type="text" class="form-control input-sm" id="person" name="person" placeholder="Full Name" style="width:200px;"></td>
<td><input type="text" class="form-control input-sm" id="position" name="position" placeholder="Position" style="width:200px;"></td>
<td><input type="text" class="form-control input-sm" id="contact_no" name="contact_no" placeholder="mobile/landline/wireless" style="width:200px;"></td>
<td align="center"><?php input_checkbox('is_archive', ''); ?></td>
<td align="center">
<input type="button" class="small_save" id="btn_add_client_d" name="btn_add_client_d" />
<input type="button" class="small_save" id="btn_save_client_d" name="btn_save_client_d" />
<input type="button" class="small_new" id="btn_new_client_d" name="btn_new_client_d" />
</td>
</tr>
</th>
<tbody id="client_children">
</table>
</form>
这是js文件:
//some codes...
$(document).ready(function(){
//some codes...
$("#man_contact_person").dialog({ //the popup form
autoOpen: false,
width: 810,
height: 500,
modal: true,
title: "Manage Contact Persons"
});
$("#btn_contact_person").click(function(){ //when calling popup form
if ($("#message").is(":visible")){
$("#man_contact_person").dialog( "open" );
get_client_children($("#id").val());
} else{
if ($("#cname").val() != '' || $("#fname").val() != ''){
$("#man_contact_person").dialog( "open" );
get_client_children($("#id").val());
} else{
alert("Please save the client's data first.");
}
}
});
//some codes...
});
//some codes...
function reset_client_d(){ //resetting the fields
$("#client_d_id").val('');
$("#form_client_contact #person").val('');
$("#form_client_contact #position").val('');
$("#form_client_contact #contact_no").val('');
$('#form_client_contact #is_is_archive').prop('checked', false);
$("#btn_add_client_d").show();
$("#btn_save_client_d").hide();
}
function client_d_add(client_h_id){ //adding data
var params = 'client_h_id=' + client_h_id +
'&person=' + $('#form_client_contact #person').val() +
'&position=' + $('#form_client_contact #position').val() +
'&contact_no=' + $('#form_client_contact #contact_no').val() +
'&is_archive=' + $('#form_client_contact #is_archive').val() + '';
$.ajax({
type: 'POST',
url: 'client_d_add.php',
data: params,
success: function(data){
get_client_children(client_h_id);
$("#client_d_result").show();
reset_client_d();
}
});
}
function get_client_children(client_h_id){ //display for popup form
var params = 'client_h_id=' + client_h_id;
$("#form_client_contact #is_is_archive").click(function(){
$("#form_client_contact #is_archive").val(($("#form_client_contact #is_is_archive").prop("checked") ? "Y" : "N"));
});
$.ajax({
type: 'POST',
url: 'get_client_children.php',
data: params,
success: function(data){
$('#client_children').html(data);
$('#btn_save_client_d').hide();
$('#btn_save_client_d').click(function(){client_d_update(client_h_id);});
$('#btn_add_client_d').click(function(){client_d_add(client_h_id);});
$('#btn_new_client_d').click(function(){reset_client_d();});
$('.edit_client_d').click(function(){
return client_d_select(this.id);
});
}
});
}
//some codes...
好的,找到了:您正在多次分配点击处理程序:
$('#btn_save_client_d').click(function(){client_d_update(client_h_id);});
每次调用get_client_children
时,都会添加一个新的单击处理程序,因此当单击保存按钮时,会多次调用保存函数。
通常,您应该在页面初始化时分配一次事件处理程序。
与其将id作为参数传递给save函数,不如将其写入表单中的一个隐藏字段,并与其他数据一起发布到。
我将重复一遍:使用JavaScript和AJAX进行缩减。你的代码似乎太过了。
相关文章:
- socket.io发射三次
- SVG实现的单调三次插值没有像d3这样的库
- readyState=4三次.Ajax-由警报引起
- Raphael悬停事件和调整大小框在第三次鼠标悬停后发生故障
- Javascript拉斐尔奇怪的闪烁发生在我鼠标悬停的第三次
- Ajax请求三次都不起作用,然后就起作用了
- 弹出循环:添加数据时停止重复/三次应用/X
- 如何让onclick第三次做一些不同的事情
- 在第三次onPageClick事件后,使用twbspagination插件和AJAX更新JS分页
- ajax表单在第二次提交时提交了两次,在第三次提交时又提交了三次,等等
- 使插值双三次函数在ie9中工作
- 为什么$scope成员被访问三次
- 了解三次插值的实现
- 火狐:三次点击的段落选择会产生我所期望的行为
- 当我在火狐扩展中使用页面模组添加内容脚本时.内容脚本函数执行三次
- 如果我在常规语法旁边包含供应商前缀,转换是否会应用两次
- 如何在三次单击html5 / javascript / css时将表格单元格颜色更改为默认值
- 解析求解三次方程的函数
- 在动态创建的元素上触发三次单击事件
- jquery removeClass 在第二次或第三次点击后没有拾取 CSS