#javascript #c# #asp.net-mvc
#javascript #c# #asp.net-mvc
Вопрос:
У меня проблема с моим js-кодом, когда я устанавливаю флажки в действии onClick(), они проверяют их все, но в элементе Inspect в разделе network я не вижу, чтобы что-то происходило.
<table class="table table-striped grid-table" id="tableLabel">
<tr>
<th>Name</th>
<th>Book</th>
<th>
<button type="button" class="checkall" onClick="checkAll()">select/deselect</button>
</th>
</tr>
@foreach (var item in (IEnumerable<cit.Models.getCheIdTip_Result>)Model)
{
<tr>
<td>@item.idtip</td>
<td>@item.tipname</td>
<td>
<div class="pure-checkbox">
<input type="checkbox" idtip="@item.idtip" class="checktip" checked="@(item.idemployee == ViewBag.idemployee ? true : false)" name="@item.id.ToString()" id="@item.id.ToString()" />
<label for="@item.id.ToString()"></label>
</div>
</td>
</tr>
}
</table>
<input type="hidden" value="@ViewData["idemployee"]" name="idemployee" id="idemployee" class="idemployee" />
И вот мой js-код, как можно выбрать их все и передать контроллеру.
var isChecked = false;
function checkAll() {
var checkboxes = document.getElementsByTagName('input');
if (isChecked) {
for (var i = 0; i < checkboxes.length; i ) {
if (checkboxes[i].className == 'checktip') {
checkboxes[i].checked = true;
}
}
} else {
for (var i = 0; i < checkboxes.length; i ) {
console.log(i)
if (checkboxes[i].className == 'checktip') {
checkboxes[i].checked = false;
}
}
}
isChecked = !isChecked;
}
Ответ №1:
вы только что использовали label там, и это заставляет вас не нажимать только на флажок. у вас должен быть js или jquery, чтобы убедиться, что вы проверили и даже сделали u. я покажу и приведу свой пример. у меня была такая же проблема по этому поводу. Я использовал пользовательский флажок и не смог отправить его на серверную часть
<label class="custom-chk">
<input type="checkbox">
<span class="checkmark"></span>
</label>
$('.checkmark').click(function () {
$(this).parents('td').toggleClass('chked')
})
я использовал ajax для отправки массива. Создайте массив из установленных флажков и отправьте его в серверную часть с помощью ajax.
for (var i = 0; i < $('label').length; i ) {
if ($('label').eq(i).hasClass('chked')) {
qrfid.push(
$('label').eq(i).attr('value')
)
}
}
не завершайте скобки и используйте $.post или $.ajax (просто одним нажатием кнопки, с помощью которой вы хотите отправить)
вы не написали, как вы будете отправлять данные. итак, я предложил то же самое, что и я. это зависит от вас
Комментарии:
1. это не работает в моем решении, можете ли вы написать пример для моего кода?
Ответ №2:
@foreach (var item in (IEnumerable<cit.Models.getCheIdTip_Result>)Model)
{
<tr>
<td>@item.idtip</td>
<td>@item.tipname</td>
<td>
<div class="pure-checkbox" idtip="@item.idtip">
<input type="checkbox" class="checktip" id="@item.id.ToString()" />
<label for="@item.id.ToString()"></label>
</div>
</td>
</tr>
}
<script>
$('.pure-checkbox').click(function () {
$(this).parents('td').toggleClass('chked')
})
var wantedids = []
$("#yoursubmitbutton").click(function () {
for (var i = 0; i < $('.pure-checkbox').length; i ) {
if ($('.pure-checkbox').eq(i).parents('td').hasClass('chked')) {
wantedids.push(
$('.pure-checkbox').eq(i).attr('idtip')
)
}
}
$.post("your url", { nameofC#variable: wantedids, nameofC#variable : $('#idofelement') },
)
})
</script>
idk, если ваш div будет иметь класс chkd, это может испортить ваш код. поэтому я добавил его в тег td. но div также можно сделать. вы отправите все с помощью ajax. и вам не понадобится тег формы, имя attrs в тегах.
а также я видел, как вы пытались сказать, что установите флажок, если выполняется следующее условие. но вы можете использовать @if
@foreach (var fenn in ViewBag.Fenn.Rows)
{
bool p = true;
<span>@fenn["FennAd"]</span>
foreach (var kfenn in ViewBag.QrFennInfo.Rows)
{
if (kfenn["FennID"] == fenn["FennID"])
{
<label value="@fenn["FennID"]" class="custom-chk chked">
<input type="checkbox" checked="">
<span class="checkmark"></span>
</label>
<div hidden>@(p = false)</div>
}
}
if (p)
{
<label value="@fenn["FennID"]" class="custom-chk">
<input type="checkbox">
<span class="checkmark"></span>
</label>
}
}
у меня было так. я не использовал здесь английский. я только что использовал viewbag и попросил его использовать double for и 1 if для проверки проверенных данных sql. я имею в виду, что у меня была таблица для уроков и таблица для групп. а также таблица для их комбинаций.
Комментарии:
1. Это не работает для меня, myb мне нужно было бы сделать что-то еще, с помощью jquery.
2. надеюсь, вы не просто скопировали и вставили части, которые я показал для вас: D. я только что показал вторую, чтобы вы поняли идею использования if и checked=» »