javascript - 在同一 div id 中获取具有不同类名的复选框值 - jquery mvc
问题描述
我正在尝试获取位于同一分区中但具有不同类名的复选框的值。
<tr>
<td colspan="4" align="center">
<div id="divEntities" style="width:100%;height:150px;overflow-y:scroll;align:center;">
<table cellspacing="2" cellpadding="2" width="95%" align="center" border="1">
@{
var i = 0;
while (i < Model.CompanyMaster.Count)
{
<tr>
<td style="width:50%" hidden="hidden"><input type="checkbox" class="EntityCheck" id="chkCompanyId" /> @Model.CompanyMaster[i].COMPANYID</td>
@if ((i + 1) < Model.CompanyMaster.Count)
{
<td><input type="checkbox" class="EntityCheck" /> @Model.CompanyMaster[i + 1].COMPANY_NAME</td>
<td><input type="checkbox" class="CurrentYear" /> @DateTime.Now.Year </td>
<td><input type="checkbox" class="PreviousYear" /> @DateTime.Now.AddYears(-1).Year </td>
<td><input type="checkbox" class="LastYear" /> @DateTime.Now.AddYears(-2).Year </td>
}
else
{
<td></td>
}
</tr>
i = i + 1;
}
}
</table>
</div>
</td>
</tr>
使用上面的代码,我可以在具有多个复选框的表中填充数据,但无法获取类名不是 EntityCheck 的复选框的值。下面是我的 jQuery 函数:
function GetSelectedEntities() {
var entities = "";
$("#divEntities").find('td').each(function (i, el) {
var checkbox = $(this).find('input.EntityCheck');
//var check1 = $(this).find('CurrentYear');
//var check2 = $(this).find('PreviousYear');
//var check3 = $(this).find('LastYear');
var check1 = $('.CurrentYear').val();
var check2 = $('.PreviousYear').val();
var check3 = $('.LastYear').val();
if (checkbox != undefined && $(checkbox).length > 0 && $(checkbox).prop('checked') == true) {
var EntityData = jQuery.trim($(this).text());
if (entities == "") {
entities = EntityData;
}
else {
entities = entities + "|" + EntityData;
}
}
});
return entities;
}
在按钮单击事件上调用 jQuery 函数:
<button style="font:normal 9pt Arial;height:30px;width:100px;border-radius:5px; border:none; background-color:royalblue; color:white" id="btnAdd" onclick="GetSelectedEntities(event);">
Add
</button>
我尝试为所有复选框提供相同的类名,但问题是我能够获取年份复选框的值,即使没有选择 CompanyName。我只有在检查CompanyName复选框并相应的年度时才需要年度值。我还尝试将 id='' 赋予年份复选框,但无法获取值。
我无法弄清楚我哪里出错了。我需要在我的 jQuery 中进行哪些更改才能获得预期的结果?
解决方案
我必须进行更改才能获得所需的解决方案。请在下面找到解决方案:
<tr>
<td colspan="4" align="center">
<div id="divEntities" style="width:100%;height:150px;overflow-y:scroll;align:center;">
<table cellspacing="2" cellpadding="2" width="95%" align="center" border="1">
@{
var i = 0;
while (i < Model.CompanyMaster.Count)
{
<tr>
<td style="width:50%" hidden="hidden"><input type="checkbox" class="EntityCheck" id="chkCompanyId" /> @Model.CompanyMaster[i].COMPANYID</td>
@if ((i + 1) < Model.CompanyMaster.Count)
{
<td><input type="checkbox" class="EntityCheck" /> @Model.CompanyMaster[i + 1].COMPANY_NAME</td>
<td><input type="checkbox" class="chkYear" /> @DateTime.Now.Year </td>
<td><input type="checkbox" class="chkYear" /> @DateTime.Now.AddYears(-1).Year </td>
<td><input type="checkbox" class="chkYear" /> @DateTime.Now.AddYears(-2).Year </td>
}
else
{
<td></td>
}
</tr>
i = i + 1;
}
}
</table>
</div>
</td>
</tr>
jQuery:
function GetSelectedEntities() {
var entities = "";
var CompanySelected = false;
var counter = 0;
$("#divEntities").find('td').each(function (i, el) {
counter = counter + 1
var checkbox = $(this).find('input.EntityCheck');
var checkboxyear = $(this).find('input.chkYear');
if (counter == 2) {
if (checkbox != undefined) {
if ($(checkbox).prop('checked') == true) {
CompanySelected = true;
var EntityData = jQuery.trim($(this).text());
if (entities == "") {
entities = EntityData;
}
else {
entities = entities + "-" + EntityData;
}
}
else {
CompanySelected = false;
}
}
}
if (counter > 2) {
if (CompanySelected == true) {
if (checkboxyear != undefined) {
if ($(checkboxyear).prop('checked') == true) {
var EntityData = jQuery.trim($(this).text());
entities = entities + "|" + EntityData;
}
}
}
}
if(counter == 5)
{
counter = 0;
}
});
return entities;
}
推荐阅读
- javascript - 谷歌脚本 IF 语句
- python - Python 3 - 如何仅加载(读取)大 JSON 文件中的特定值?
- python - Python:将 Dataframe 写入 influxdb
- web - LCP 与 Lighthouse 及其原始跟踪之间的差异
- flutter - 更改颤动应用程序图标的背景颜色
- python - 比较 2 个项目列表,如果不在则引发错误
- python - 如何创建自毁 csv 文件
- firebase - Flutter Firebase 身份验证:userChanges / idTokenChanges 可以从外部事件恢复为生成空用户吗?
- reason - 比较 Rescript 中的字符串
- azure - 使用 Azure 数据工厂在源中选择当前月份文件夹