无法获取未选中的复选框值

时间:2016-07-19 05:59:37

标签: jquery asp.net-mvc-4

我在ASP.NET模型中有一个FieldItems字典,这个字典的值如下所示。

年龄 - 复选框,姓名 - 文字,公司 - 文字

在我的视图文件中,我正在根据字典中提供的键值对创建控件。

<div class="row cloneMe">
    <table>
        @foreach (var item in Model.FieldItems)
        {
            <tr>
                @if (item.Value == "checkbox")
                {
                    <td>@item.Key</td>
                    <td> <input class="associationCheckbox" type="@item.Value" name="@item.Key" value="false" placeholder="@item.Key" /></td>
                }
                else if (item.Value == "number")
                {
                    <td>@item.Key</td>
                    <td> <input type="number" name="@item.Key" value="0" ng-required="true" placeholder ="@item.Key" /> </td>
                }
                else
                {
                    <td>@item.Key</td>
                    <td> <input type="text" name="@item.Key" value="" ng-required="true" placeholder ="@item.Key" /> </td>
                }
            </tr>
        }
    </table>
</div>


    <span>
        <button type="button" id="associationAdd" class="btn btn-success" style="float:none;cursor:pointer" ng-click="RemoveWidget()">AddPerson</button>
    </span>
    <span>
        <button type="button" id="associationRemove" class="btn btn-danger" style="float:none;cursor:pointer" ng-click="AddWidget()">Remove</button>
    </span>

添加到previousone,我可以根据按钮点击包含/删除所选字段,如下面的代码所示。

$("#associationAdd").on("click", function () {
    $(".cloneMe:last").clone(true).insertAfter(".cloneMe:last");
});

$("#associationRemove").on("click", function () {
    if ($(".cloneMe").length > 1) {
        $(".cloneMe:last").remove();
    }
});;

在ASP.NET页面上添加我的控件后,我正在读取控件值。

enter image description here

    [HttpPost]
    public ActionResult Index(FormCollection formCollection)
    {
        foreach (var key in formCollection.Keys)
        {
            var value = formCollection[key.ToString()];
        }

    }

点击提交按钮,我可以阅读姓名和年龄值。但是,我只能选中复选框值。 如果我有三个复选框并且都未选中,则复选框的键不会显示在Acton Result的formCollection中。

我尝试了以下方法设置复选框状态但没有结果。

 $("input:checkbox[class=associationCheckbox]").each(function () {

        if ($(this).attr('checked')) {
            $(this).val('true');
        } else {
            $(this).val('false');
        }
    });

1 个答案:

答案 0 :(得分:1)

为了使用jquery使用复选框的checked属性:

<?php include 'connection.php';?>

如果您使用的是早于1.6的jquery版本,请使用

$(this).prop('checked', true);

要检查是否选中了复选框,请使用:

$(this).attr('checked', 'checked');

<强> JSFIDDLE