По сути, у меня есть таблица с флажками в первом столбце каждой строки (остальная часть таблицы - просто параметры конфигурации, а каждая строка - это собственный набор параметров, которые сохраняются, только если этот флажок установлен). В верхней части таблицы есть флажок select-all / deselect-all, и с его помощью возникает проблема. Функция select-all прекрасно работает с тем, что отображается в пользовательском интерфейсе, но позже, когда я go через некоторую проверку, значение, извлеченное из флажков, является неправильным.
Просто снятие отметки и проверка полей вручную работает нормально. Но как только я использую select-all, значения всегда true
.
Итак, ожидаемый результат: select-all корректно обновляет значения (или имеет лучший способ получения значений через jQuery или просто Javascript, в зависимости от того). Я предполагаю, что что-то не так с тем, как я обновляю значения в select-all, но я не нашел альтернативы тому, что я пытаюсь сделать sh этой работой.
// there is more in the class, but as far as what I think the question needs:
public class SomeModel
{
public bool _UseThisRow { get; set; }
}
@model Models.SomeModel
@{
}
<script type="text/javascript">
function ValidateSelections(){
var isChk = $('[name="@nameof(Model._UseThisRow)"]').is(':checked');
if(isChk){
alert('error');
}
}
$('#opt-all').change(function(){
var val = $(this).is(":checked");
$('[name="@nameof(Model._UseThisRow)"]').prop('checked', val);
// and several more of these^ for the rest of the checkboxes
}
$('#submit').click(function(){
if(ValidateSelections()){
// do stuff
}
}
</script>
<div>
<table class="table table-bordered table-condensed table-stripted table-responsive" cellspacing="0" cellpadding="0">
<thead>
<tr>
<th style="text-align:center;width:30px;">
<input type="checkbox" id="opt-all" />
</th>
</tr>
</thead>
<tbody>
<tr>
<td style=text-align: center;" id="@nameof(Model._UseThisRow>
@Html.CheckBoxFor(m => m._UseThisRow)
</td>
</tr>
</tbody>
</table>
</div>