从已选中复选框的父行中获取元素

时间:2014-06-11 11:21:40

标签: javascript html angularjs

我在表格中有以下行。

<tr class="data_rows" ng-repeat='d in t2'> <td class="tds"> <input class='checkBoxInput' type='checkbox' onchange='keepCount(this)'></td> <td class="tds"><a href='perf?id={{d.ID}}'>{{d.ID}}</a></td> <td class="tds">{{d.HostOS}}</td> <td class="tds">{{d.BuildID}}</td> <td class="tds">{{d.Description}}</td> <td class="tds">{{d.User}}</td> <td class="tds">{{d.StartTime}}</td> <td class="tds">{{d.UniqueMeasure}}</td> <td class="tds">{{d.TotalMeasure}}</td> </tr>

这里是HTML for按钮,它将调用函数从已选中的复选框中收集ID并存储它们。

<div id='compButtonDiv' align='center' style="display: none;"> <input id='cButton' type='button' value='compare selections' onclick='submitSelection()' style= "margin :0 auto" disabled> </div>

数据在t2中,由长度为15-20的数组组成。 我想要做的是获取2个复选框的ID即{{d.ID}}的值,以便我可以将它们存储在变量中,并使用`location.href = url?param1&amp将它们作为查询参数传递给URL ;参数2&#39;

这是javascript:

function keepCount(obj){     
debugger;
//var count=0;
if(obj.checked){
    obj.classList.add("checked");
}else{
    obj.classList.remove("checked");
}

var count = document.getElementsByClassName("checked").length;
var cBtn = document.getElementById('cButton');
//alert(count);

if(count == 2){
    cBtn.disabled = false;
}
else if(count < 2){
    cBtn.disabled= true;
}
else{
    cBtn.disabled= true;
    alert("Please Select two sets for comparison. You have selected: " +     count);
}
}

function submitSelection(){
// what should be the code here??

location.href= "existingURL?a&b";
}

现在有人可以告诉我如何获得身份证吗?我需要从选中的复选框中提取ID(点击按钮,其代码我已在上面提及&#39;。

感谢。

-Ely

1 个答案:

答案 0 :(得分:0)

首先,当我们使用angularjs时,我们倾向于越来越少地依赖DOM操作。

出于这个原因,您可以做的是将ngModel附加到复选框。 喜欢:

<input class='checkBoxInput' ng-model='d.isChecked' type='checkbox' onchange='keepCount(this)'>

这样做,它将变量(在您的情况下是列表中项目的属性)附加到复选框。如果检查它是真的,如果未选中,最初它将是未定义的,稍后检查然后取消选中它将是假的。

现在,当你提交时,只需循环遍历函数中的原始列表并检查d.isChecked的值(true / falsy值)。然后,您可以在单独的列表中添加必要的项目以进行提交。 唯一的问题是在提交时检查列表,检查是否(d.isChecked),以便它忽略假值(false / undefined)。