在将其值动态设置为true

时间:2018-03-16 16:20:53

标签: javascript jquery html asp.net-mvc

我目前正在开发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来尝试选择它,但它也不起作用。

3 个答案:

答案 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>