我目前正在开发ASP.NET MVC中的一个项目。我有一个显示数据的页面,用户可以使用复选框标记不同的项目,然后对这些项目进行更改。在某些页面上,有足够的复选框可以选择"选择所有复选框"按钮是必需的。我在javascript中键入了代码,无论我尝试什么,我似乎无法让它工作。这是我的HTML:
我首先遍历我的viewmodel数据并显示一个复选框,其中包含每个复选框的模型ID ID。
@foreach(var item in Model.Data)
{
<input name="selected" type="checkbox" id="@item.id" value="@item.id"/>
}
页面上显示的每个复选框现在都有每个数据库ID的ID。
然后我创建了这个按钮
<a onclick="selectAll()" class="btn btn-primary">Select All</a>
该按钮对应于此javascript:
<script type="text/javascript" language="javascript">
function selectAll()
{
var stepIDs = @Html.Raw(JsonConvert.SerializeObject(this.Model.Data));
for(let i = 0; i < stepIDs.length; i++)
{
var curr = stepIDs[i].id;
document.getElementById(curr).checked = true;
}
}
</script>
我使用SerializeObject()命令再次获取ID,然后将每个相应的ID设置为true(取决于数据库中的数量)。
在运行时,复选框的值成功更改为true,但在复选框中没有显示勾号。我也尝试过使用Jquery来尝试选择它,但它也不起作用。
答案 0 :(得分:1)
尝试
yourCheckBoxVariable.setAttribute("checked","checked");
或
yourCheckBoxVariable.click();
希望这会有所帮助。你正在做的事情有点超出了我的知识范围,但是我已经处理过以前没有打勾的复选框,而且上述两个解决方案都适用于我。
答案 1 :(得分:1)
尝试
var curr = stepIDs[i].id;
而不是
var curr = stepIDs[i];
在for-loop中
答案 2 :(得分:0)
您不应该使用id
来实现此类功能。
相反,请提供您想要操作class
名称的控件集合。
然后,迭代具有class
名称的元素并执行所需的操作。
以下是一个例子:
One <input type="checkbox" id="chkOne" class="myChecks">
Two <input type="checkbox" id="chkTwo" class="myChecks">
Three <input type="checkbox" id="chkThree" class="myChecks">
<script>
var chk = document.getElementsByClassName("myChecks");
for(var i = 0; i < chk.length; i++) {
chk[i].checked = true;
}
</script>