Невозможно получить непроверенные значения флажка

jquery asp.net-mvc-4

533 просмотра

1 ответ

622 Репутация автора

У меня есть словарь FieldItems в модели ASP.NET, и этот словарь имеет значения, как показано ниже.

Возраст - флажок, Имя - текст, Компания - текст

В моем файле просмотра я создавал элементы управления на основе пары ключ-значение, которые доступны в словаре.

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

В дополнение к предыдущему, я могу включить / удалить выбранные поля на основе нажатия кнопки, как показано ниже.

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

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

После добавления элементов управления на страницу ASP.NET я считывал значения элементов управления.

введите описание изображения здесь

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

    }

Нажав кнопку «Отправить», я могу прочитать имя и возраст. Тем не менее, я могу получить только отмеченные значения флажков. Если у меня три флажка и все они не отмечены, то ключ флажка не отображается в форме Коллекция результата Acton.

Я пробовал следующий способ установить состояние флажка, но безрезультатно.

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

        if ($(this).attr('checked')) {
            $(this).val('true');
        } else {
            $(this).val('false');
        }
    });
Автор: Balanjaneyulu K Источник Размещён: 19.07.2016 05:59

Ответы (1)


1 плюс

124187 Репутация автора

Решение

Для того, чтобы проверить атрибут checkbox, используя jquery, используйте:

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

Если вы используете версию jquery ранее, чем 1.6, используйте

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

Чтобы проверить, установлен ли флажок или нет, используйте:

$(function() {
    $('.associationbox').on('click', function() {
        if ($('.associationbox').prop('checked')) {
            alert('checked');
        }
    });
});

JSFIDDLE

Автор: Shubham Khatri Размещён: 19.07.2016 06:05
Вопросы из категории :
32x32