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

标签 javascript jquery html performance jquery-ui

我正在尝试附加两个条件的数据。它无法正常工作::

表 1:有 2 个字段 - a) 员工 ID 输入和 b) 薪资类型下拉列表

表2:想要在此处附加数据,条件是员工 ID 和薪资类型

条件是防止重复具有 id 和工资类型的数据。它无法正常工作:例如我选择

123 基本 123 正常 124 基础 124 正常 => 这里不起作用。我想添加这一行但未能做到这一点。我需要添加行数据并检查员工 ID 和工资类型以防止重复。

HTML

    <table>
        <tr>
            <td> 
                <input id="empid" placeholder="employeid">   
            </td>
            <td> 
                    <select id="salarytype">
                        <option value="Basic"> Basic</option> 
                        <option value="Normal"> Normal</option>
                    </select>    
            </td>
            <td><span id="button_add"> Add </span>  </td>
        </tr>
</table>


<table>
    <tbody id="test">
    </tbody>
</table>    

JavaScript

    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);

    //appending data to another table
    if (index >= 0 && salaryArray >= 0) {
      alert("You already added Employee And Salary Type");
      exit;
    } else {
      if (empid == "") {
        alert("Please add Employee ID");
        exit;
      } 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;
    }
}

检查这个fiddle

关于javascript - 使用 JavaScript 或 Jquery 附加具有两个条件的行数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22730095/

相关文章:

html - 如何在div中均匀分布菜单链接

javascript - 如何设置 Firebase 数据库规则以不允许删除或更新子项?

javascript - 如何在flask上的同一页面中显示多个html?

javascript - 如何将 javascript 函数中的参数字符串连接到 append html 中的字符串?

javascript - 使用切换类更改 div 跨度时出现问题

node.js 中的 jQuery.ajax()?

html - 创建具有多个边框的按钮

javascript - 删除 iframe 中的一些文本

Javascript:如何从 var 设置样式选择器

javascript - 无法使用 RESTful api put 更新 mongo 数组