Сделал так, все работает, вроде не слишком криворуко:
if(trCheck){
var result = [];
[].forEach.call(trCheck, function(item) {
checkBox = item.childNodes[0].childNodes[0];
if(checkBox){
checkBox.addEventListener('click', function() {
var num = 0;
[].forEach.call(trCheck, function(items) {
check = items.childNodes[0].childNodes[0];
if(check.checked === true){
num++
}
});
if(num > 1){
if(this.checked){
var union = 0;
[].forEach.call(trCheck, function(items, i) {
id = items.childNodes[0].getAttribute("id");
check = items.childNodes[0].childNodes[0];
if(check.checked === true){
result[i] = id;
union++;
}else{
if(union > 0 && union < num){
check.checked = true;
result[i] = id;
}
}
});
}else{
[].forEach.call(trCheck, function(items) {
check = items.childNodes[0].childNodes[0];
check.checked = false;
result = [];
});
}
return result;
}
});
}
});
}