使用JavaScript或Jquery附加具有两个条件的行数据
我试图在数据中附加两个条件。它工作不正常:: 表1:有两个字段-员工id输入a和薪资类型下拉b 表2:希望在此处附加数据,条件为员工id和薪资类型 条件是防止id和salarytype重复数据。它工作不正常:例如,我选择 123基本 123正常 124基本 124正常=>此处不工作。我想添加此行,但未能添加。我需要添加行数据并检查员工id和薪资类型,以防止重复 Html JavaScript 非常感谢您的帮助。试试这个 JS使用JavaScript或Jquery附加具有两个条件的行数据,javascript,jquery,html,performance,jquery-ui,Javascript,Jquery,Html,Performance,Jquery Ui,我试图在数据中附加两个条件。它工作不正常:: 表1:有两个字段-员工id输入a和薪资类型下拉b 表2:希望在此处附加数据,条件为员工id和薪资类型 条件是防止id和salarytype重复数据。它工作不正常:例如,我选择 123基本 123正常 124基本 124正常=>此处不工作。我想添加此行,但未能添加。我需要添加行数据并检查员工id和薪资类型,以防止重复 Html JavaScript 非常感谢您的帮助。试试这个 JS 您需要确保两个数组中的匹配项位于同一索引中 假设两个数组具有相同的长度
您需要确保两个数组中的匹配项位于同一索引中 假设两个数组具有相同的长度,只需按如下方式在数组中循环即可解决此问题:
for (var i = 0; i < addedEmployeeId.length; i++) {
if (addedEmployeeId[i] == empid && addedSalaryType[i] == salarytype) {
flag = true;
break;
}
}
选中此项我将使用对象结构来代替此作业,它将简化对它的处理: JavaScript: 生成的employees对象将具有以下结构:
{
123: {
Basic: true,
Normal: true
},
124: {
Basic: true,
Normal: true
}
}
这样,您甚至可以轻松地添加其他类型,而不仅仅是基本类型和普通类型
参见fiddle示例,它是有效的:这里是JSFIDLE::@selim接受它作为解决方案或投票支持可以帮助未来的读者,thnx:
var addedEmployeeId = [];
var addedSalaryType = [];
$("#button_add").click(function () {
///getting data from a table
var tableData = $(this).closest("tr").find("td input").map(function () {
return $(this).val();
}).get();
//getting salary type by dropdown
var e = document.getElementById("salarytype");
var salarytype = e.options[e.selectedIndex].value;
var empid = document.getElementById("empid").value;
var addedEmpid = $.trim(tableData[0]);
//checking value in array
var index = $.inArray(addedEmpid, addedEmployeeId);
var salaryArray = $.inArray(salarytype, addedSalaryType);
var booltype=true;
//appending data to another table
$('#test tr').each(function(midex,mval){
var empids=$(mval).find('td:eq(0)').find('input').val();
var saltype=$(mval).find('td:eq(1)').find('input').val();
if(parseInt(empids)==parseInt(addedEmpid) && (saltype==salarytype)){
booltype=false;
}
});
if (booltype==false) {
alert("You already added Employee And Salary Type");
} else {
if (empid == "") {
alert("Please add Employee ID");
} else {
$("#test").append(
"<tr><td><input name='' value='" + $.trim(tableData[0]) + "' style='width: 120px;' readonly > </td><td><input value='" + salarytype + "' style='width: 100px;' readonly ></td></tr>");
addedEmployeeId.push(addedEmpid);
addedSalaryType.push(salarytype);
}
}
});
for (var i = 0; i < addedEmployeeId.length; i++) {
if (addedEmployeeId[i] == empid && addedSalaryType[i] == salarytype) {
flag = true;
break;
}
}
var employees = {};
$("#button_add").click(function () {
//getting data from a table
var tableData = $(this).closest("tr").find("td input").map(function () {
return $(this).val();
}).get();
//getting salary type by dropdown
var e = document.getElementById("salarytype");
var salarytype = e.options[e.selectedIndex].value;
var empid = document.getElementById("empid").value;
var addedEmpid = $.trim(tableData[0]);
// if employee added previous with addedEmpid and given salary, dont add!
if(employees.hasOwnProperty(addedEmpid) && employees[addedEmpid].hasOwnProperty(salarytype)) {
alert("You already added Employee And Salary Type");
} else if(empid == "") {
alert("Please add Employee ID");
} else {
// if employee id unknown, we create the object
if(!employees.hasOwnProperty(addedEmpid)) {
employees[addedEmpid] = {};
}
// adding salaratype for this id
employees[addedEmpid][salarytype] = true;
$("#test").append("<tr><td><input name='' value='" + $.trim(tableData[0]) + "' style='width: 120px;' readonly > </td><td><input value='" + salarytype + "' style='width: 100px;' readonly ></td></tr>");
// for debugging...
console.log(employees);
}
});
123 Basic
123 Normal
124 Basic
124 Normal
{
123: {
Basic: true,
Normal: true
},
124: {
Basic: true,
Normal: true
}
}