MVC 5 - Razor, Javascript Anfänger Benutzer !!OnChange-Ereignis für jede Zeile in Tabelle ausführen - MVC
Ich möchte gerne ein einfaches onchange-Ereignis ausführen, wenn ein Kontrollkästchen in der Tabelle geändert wird, aber die onchange funktioniert nur für die erste Zeile.
Ich habe gelesen, dass dies daran liegt, dass das Skript nur in der ersten Zeile ausgeführt wird und nicht für die nachfolgenden dynamisch gefüllten Daten ausgeführt wird.
Ich verstehe das, aber ich weiß nicht, wie ich es beheben soll ... Ich nehme an, dass ich für jedes Kontrollkästchen in jeder Zeile eine individuelle ID erstellen muss - ich weiß nicht, wie das geht.
Wenn die Kontrollkästchen unterschiedliche IDs haben, weiß ich nicht, wie ich auf sie verweisen soll, um die Onchange hinzuzufügen.
Hope das macht Sinn. Danke im Voraus.
@model IEnumerable<core_point.Models.RegisterEmployee_Step6Model>
@{
ViewBag.Title = "Index";
}
<h2>Select the roles that you have been employed to do, by clicking the check-box...</h2>
<table class="table">
@foreach (var item in Model)
{
<tr class="h3">
<td class="vert-align">
<img src="@item.IconLocation" height="80" width="80" />
</td>
<td class="vert-align">
@Html.CheckBoxFor(modelItem => item.Selected, new { @id = "CheckBoxSelected" })
</td>
<td class="vert-align">
@Html.DisplayFor(modelItem => item.RoleDescription)
</td>
<td class="vert-align">
@Html.TextBoxFor(modelItem => item.Role, new { hidden = "hidden"})
</td>
</tr>
}
</table>
<div>
Roles selected:<input type="number" id="noSelected" value="0"/>
</div>
<script>
var fld_CheckBoxSelected = document.getElementById("CheckBoxSelected");
var fld_noSelected = document.getElementById("noSelected");
fld_CheckBoxSelected.onchange = function() {
if (fld_CheckBoxSelected == true) {
fld_noSelected = fld_noSelected.value + 1;
}
else
{
fld_noSelected = fld_noSelected.value - 1;
}
}
</script>
Großartig, danke für die Lösung. Es hat gut funktioniert. – Ste