使用JavaScript或Jquery附加具有两个条件的行数据

使用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 您需要确保两个数组中的匹配项位于同一索引中 假设两个数组具有相同的长度

我试图在数据中附加两个条件。它工作不正常::

表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
   }
}