ajax请求数据之后在已经有的数据前面打对勾的方法

今天遇到这么一个需求:

  选择一部分人,在点击确定的时候添加到对应的div中,也就是添加到对应的表单下面,当再次查询的时候需要在已经选过的人的复选框前面打伤对勾。

点确定添加到:

 

 

再次打开模态框:

 

 

也就是对已经选过的数据进行标记,提醒用户已经选过。

 

思路:

已经选过的人有唯一的标记ID,获取到全部的ID之后组成一个数组,遍历此数组去寻找所有数据中ID相等的,找到前面的复选框打伤对勾。

 

第一种:一层遍历

  拿左边的ID去新查出的数据查找对应元素,找到后打对勾

// 验证已经选择的题,如果为已经选中的打上对勾
function validateCheckedQuestion() {
    var $leftIds = $(".el_addEPleft").find(".ques_id")// 查到左边隐藏的ID元素
    var leftIds = [];// 获取到左边已经选择的试题ID数组
    for (var i = 0, length_1 = $leftIds.length; i < length_1; i++) {
        leftIds[i] = $($leftIds[i]).attr("id");
    }
    // 根据左边的元素与右边查找如果已经选中的话打上对勾
    for (var k = 0, length_2 = leftIds.length; k < length_2; k++) {
        $("#bankQuestions").find("[id='" + leftIds[k] + "']").siblings(
                ".el_tiku_checkedButton").attr("checked", "true");
    }

}

 

 

 

 

 

 

第二种:两层遍历

  遍历已经选过的,遍历未选过的,相等的就打上对勾。

/**
 * 校验哪些已经选中,用于判断员工再次选择员工的时候已经选中的checked为选中 1.获取外部已经选中添加到框中的ID数组outEmployeeIds
 * 2.获取内部多选框集合,判断其value值,如果在outEmployeeIds中能找见将其checked属性设为checked
 */
var checkOutHasChecked = function() {
    var outEmployees = $("#department_employee_out").find(".el_empList");
    var outEmployeeIds = [];// 标记外面选中的已经ID
    // 初始化外面ID数组
    for (var i = 0, length = outEmployees.length; i < length; i++) {
        outEmployeeIds[i] = outEmployees[i].id;// 获取到外部的ID
    }
    var modalOutEmployees = $("#outEmployeeTable").find(".el_checks");// 查找模态框所有的多选框
    for (var k = 0, length_1 = outEmployeeIds.length; k < length_1; k++) {
        for (var j = 0, length_2 = modalOutEmployees.length; j < length_2; j++) {
            if (outEmployeeIds[k] == modalOutEmployees[j].value) {
                modalOutEmployees[j].checked = "checked";// 修改元素的选中属性为选中
                break;
            }
        }
    }

}

 

posted @ 2017-11-02 22:56  QiaoZhi  阅读(557)  评论(0编辑  收藏  举报