2017-03-06 66 views
0

检查是否有可能基于data-iddata-tipedata-group下面我的情况下使用jQuery检查复选框:jQuery的设置复选框,基于3点条件的数据

更新问题

success: function (jsonStr) 
{ 
    var len = jsonStr.length; 
    for(var i=0; i<len; i++) 
    { 
     var moduleID = jsonStr[i].moduleID; 
     var moduleName = jsonStr[i].moduleName; 
     var projectName = jsonStr[i].projectName; 
     var groupID = jsonStr[i].groupID; 
     var chk = jsonStr[i].chk; 
     var chkModule = jsonStr[i].chkModule; 
     var group = jsonStr[i].group; 

     var tr_str = "<tr id='"+jsonStr[i].moduleID+"'>" + 
      "<td>" + projectName + "</td>" + 
      "<td>" + moduleName + "<input type='text' name='chkTipeInput[]' class='chkTipeInput"+jsonStr[i].moduleID+"'/></td>" + 
      "<td align='center'><input type='checkbox' data-id='"+jsonStr[i].moduleID+"' data-group='"+jsonStr[i].groupID+"' data-tipe='CREATE' value='CREATE'/></td>" + 
      "<td align='center'><input type='checkbox' data-id='"+jsonStr[i].moduleID+"' data-group='"+jsonStr[i].groupID+"' data-tipe='EDIT' value='EDIT'/></td>" + 
      "<td align='center'><input type='checkbox' data-id='"+jsonStr[i].moduleID+"' data-group='"+jsonStr[i].groupID+"' data-tipe='VIEW' value='VIEW'/></td>" + 
      "<td align='center'><input type='checkbox' data-id='"+jsonStr[i].moduleID+"' data-group='"+jsonStr[i].groupID+"' data-tipe='DELETE' value='DELETE'/></td>" + 
      "</tr>"; 

      $('.dataShow2').show(); 
      $("#tData tbody").append(tr_str); 
    } 

    $(":checkbox").each(function() { 
     $(this).prop("checked", $(this).attr("data-id") == chkModule && $(this).attr("data-tipe") == chk && $(this).attr("data-group") == group) 
    }) 
}) 

阵列用于:

chk  = CREATE,EDIT, EDIT, VIEW 
chkModule = MD0003,MD0003,MD0002,MD0002 
group  = GR0001,GR0001,GR0001,GR0001 

意思是:

if data-id="1" and data-tipe="create" and data-group="a" then check the checkbox 

回答

1

//$(":checkbox").each(function() { 
 

 
//$(this).prop("checked", $(this).attr("data-id") == 1 && $(this).attr("data-tipe") == "create" && $(this).attr("data-group") == "a") 
 
//}) 
 

 
//var data = [1,"create","a"]//array of values 
 

 
var chk = ["CREATE", "VIEW", "EDIT", "DELETE"] 
 
var chkModule = ["MD0003", "MD0002", "MD0003", "MD0002"] 
 
var group = ["GR0001", "GR0001", "GR0001", "GR0001"] 
 

 

 
for (var i = 0; i < 4; i++) { 
 
    console.log(chk[i] + " " + chkModule[i] + " " + group[i]) 
 
    $(":checkbox[data-tipe=" + chk[i] + "][data-id=" + chkModule[i] + "][data-group=" + group[i] + "]").prop("checked",true) 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<table> 
 
    <tr> 
 
    <th>Nama</th> 
 
    <th>Create</th> 
 
    <th>Read</th> 
 
    <th>Update</th> 
 
    <th>Delete</th> 
 
    </tr> 
 
    <tr> 
 
    <td>coba</td> 
 
    <td><input type="checkbox" data-id="MD0003" data-tipe="CREATE" data-group="GR0001"></td> 
 
    <td><input type="checkbox" data-id="MD0002" data-tipe="VIEW" data-group="GR0001"></td> 
 
    <td><input type="checkbox" data-id="MD0003" data-tipe="EDIT" data-group="GR0001"></td> 
 
    <td><input type="checkbox" data-id="MD0002" data-tipe="DELETE" data-group="GR0001"></td> 
 
    </tr> 
 
    <tr> 
 
    <td>coba 2</td> 
 
    <td><input type="checkbox" data-id="2" data-tipe="create" data-group="a"></td> 
 
    <td><input type="checkbox" data-id="2" data-tipe="read" data-group="a"></td> 
 
    <td><input type="checkbox" data-id="2" data-tipe="update" data-group="a"></td> 
 
    <td><input type="checkbox" data-id="2" data-tipe="delete" data-group="a"></td> 
 
    </tr> 
 
    <tr> 
 
    <td><input type="button" id="btnUpdate" value="Update" /> 
 
    </tr> 
 
</table>

使用状况,如果真那么托==检查

+0

嗨Guradio,如果data-id,data-tipe和data-group的值是数组,那么怎么样?怎么做? –

+0

@HiDayurieDave具有数组值的数据属性? – guradio

+0

是的,所有这3个数据都是从数组 –

1

您可以指定属性,它在选择的值,然后使用prop设置属性值:

$("input[data-id='1'][data-tipe='create'][data-group='a']").prop("checked", true); 

演示:

$("input[data-id='1'][data-tipe='create'][data-group='a']").prop("checked", true);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<table> 
 
    <tr> 
 
    <th>Nama</th> 
 
    <th>Create</th> 
 
    <th>Read</th> 
 
    <th>Update</th> 
 
    <th>Delete</th> 
 
    </tr> 
 
    <tr> 
 
    <td>coba</td> 
 
    <td><input type="checkbox" data-id="1" data-tipe="create" data-group="a"></td> 
 
    <td><input type="checkbox" data-id="1" data-tipe="read" data-group="a"></td> 
 
    <td><input type="checkbox" data-id="1" data-tipe="update" data-group="a"></td> 
 
    <td><input type="checkbox" data-id="1" data-tipe="delete" data-group="a"></td> 
 
    </tr> 
 
    <tr> 
 
    <td>coba 2</td> 
 
    <td><input type="checkbox" data-id="2" data-tipe="create" data-group="a"></td> 
 
    <td><input type="checkbox" data-id="2" data-tipe="read" data-group="a"></td> 
 
    <td><input type="checkbox" data-id="2" data-tipe="update" data-group="a"></td> 
 
    <td><input type="checkbox" data-id="2" data-tipe="delete" data-group="a"></td> 
 
    </tr> 
 
    <tr> 
 
    <td><input type="button" id="btnUpdate" value="Update" /> 
 
    </tr> 
 
</table>

+0

嗨Yeldar,怎么样,如果数据-ID,数据TIPE的价值,数据组是数组?怎么做? –

+0

@HiDayurieDave你好。一个属性的值如何可以是一个数组? :) –

+0

其实复选框在循环中,问:我需要在这个问题中再次提出新的问题还是足够的? –

2

您可以使用过滤器

$('input[type=“checkbox”]').filter(function() { 
return $(this).data("id") == "1" && $(this).data("tipe") == "create" && $(this).data("group") == "a"); 
}).prop("checked",true); 
+0

嗨马克,如果data-id,data-tipe和data-group的值是数组,那么怎么办?怎么做? –

+0

我不明白你的问题在上下文中,过滤器查看所有输入复选框,并检查该框中的数据值是否为真。 - 如果你的意思是比较TO的值,那么只需为每个数组元素引用数组元素,而不是像“1”这样的硬编码值,使用'myarray [0]' –