在弹出表单中添加数据时,有人能帮助我跟踪导致重复/三倍化/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进行缩减。你的代码似乎太过了。