<div class="result-content">
<div class="table-container">
<table class="table-names">
<thead>
<tr>
<th></th>
<th>Company Name
</th>
<th>Type
</th>
<th>Location
</th>
<th></th>
<th>Ultimate Parent
</th>
</tr>
</thead>
<tbody>
@{
int count = -1;
}
@foreach (Company company in Model)
{
<tr>
@{
count = Model.IndexOf(company);
//var rParent = new System.Text.RegularExpressions.Regex(",| |&");
var contentParent = company.CompanyId.ToString().RemoveInvalidSymbolsInId();//rParent.Replace(company.CompanyId.ToString(), "_");
string value = string.Format("{0}|{1}", company.CompanyName, company.CountryRef.Name);
var comp = value.Split('|');
var parentCompanyId = company.UltimateCompanyId.ToString().RemoveInvalidSymbolsInId();
string ultimateParentName = string.Format("{0}", company.UltimateParentName);
var companyLevel = 0;
}
<td>
<div id="childSubsCheckBoxes">
<input type="checkbox" id="@string.Format("idRadio_{0}", contentParent)"
name="@ViewBag.UiElementMapper.SearchString"
value="@ViewBag.UiElementMapper.SearchString"
data-Criteria="@company.CompanyId"
data-Operation="@ViewBag.UiElementMapper.Operation"
data-Groupkey="@ViewBag.UiElementMapper.GroupKey"
data-SearchString="@ViewBag.UiElementMapper.SearchString"
data-Value="@string.Format("{0}", comp[0])"
data-ValueType="@ViewBag.UiElementMapper.ValueType" />
</div>
</td>
<td>@company.CompanyName
</td>
<td style="padding-left: 10px;">@if (@company.CompanyLevel != null)
{
if (@company.CompanyLevel == 0)
{
<img src="@Url.Content("~/Content/images/ICTSP-Logo-red.gif")" title="" alt="Ultimate Parent" />
}
else
{
<img src="@Url.Content("~/Content/images/ICTSP-Logo-blue.gif")" title="" alt="Child/Subsidiary"/>
}
}
</td>
<td>@company.CountryRef.Name
</td>
<td>
@{
<div id="parentCheckBoxes">
<input type="checkbox" id="@string.Format("idRadio_{0}", parentCompanyId)"
name="@ViewBag.UiElementMapper.SearchString)"
value="@ViewBag.UiElementMapper.SearchString"
data-Criteria="@company.UltimateCompanyId"
data-Operation="@ViewBag.UiElementMapper.Operation"
data-Groupkey="@ViewBag.UiElementMapper.GroupKey"
data-SearchString="@ViewBag.UiElementMapper.SearchString"
data-ValueType="@ViewBag.UiElementMapper.ValueType"
data-Value="@string.Format("{0}", ultimateParentName)"
data-Level="0"
/>
</div>
}
</td>
<td>@if (@company.UltimateParentName != null)
{
<font title="@company.UltimateParentName">@Html.ActionLink(company.UltimateParentName, "GetCompanyInformation", new { companyId = company.UltimateCompanyId, companyName = company.UltimateParentName, guid = Guid.NewGuid() })</font>
}
</td>
</tr>
}
</tbody>
</table>
</div>
</div>
in the above html .. I have to disable the check boxes under div-childSubsCheckBoxes on the click of checkboxes under div-parentCheckBoxes. We already have a function for onlick of the checkboxes in this page. I wrote the below mentioned code and it is disabling the first checkbox only and not the rest of the checkboxes. Please let me know where am I going wrong.
clb.el.criteriaList.find('#childSubsCheckBoxes').each(function () {
var checkbox = clb.el.criteriaList.find('#childSubsCheckBoxes').find('input[type=checkbox]');
checkbox.attr('disabled', true);
});
on click of any checkbox I have this function
addCheckboxCriteria: function () {
clb.el.criteriaList.find('#childSubsCheckBoxes').each(function () {
var checkbox = clb.el.criteriaList.find('#childSubsCheckBoxes').find('input[type=checkbox]');
checkbox.attr('disabled', true);
});
var t = $(this);
var empty = clb.el.criteriaForm.find('div.criteria-item-checked').length;
var searchString = $.trim(clb.el.criteriaMenuList.find('li.active').text());
var currentTab = t.parents('.search-criteria-list').attr('id');
var element;
var tabString;
var count = 0;
clb.el.criteriaForm.find('.no-criteria').find('span').remove();
if (currentTab) {
var currentTabs = currentTab.replace(/ul-/, '');
}
count = clb.el.criteriaForm.find('div.criteria-item-checked').length;
if ($('#' + currentTabs).parent().css('display') === 'block') {
var tabString = $('#' + currentTabs).parent().find('li.active').find('a').attr('data-name');
var idTab = $('#' + currentTabs).parent().find('li.active').attr('id');
}
if (!t.attr('checked') == false && count < clb.maxCriteriaCount ) {
var divElement = $('<div/>', {
'class': 'criteria-item-checked',
id: 'div_' + t.attr('id'),
'Name': t.attr('name'),
'data-Start': t.attr("data-start"),
'data-Criteria': t.attr("data-Criteria"),
'data-Item': t.attr('data-Item'),
'data-Operation': t.attr('data-Operation'),
'data-Groupkey': t.attr('data-Groupkey'),
'data-SearchString': t.attr('data-SearchString'),
'data-Value': t.attr('data-Value'),
'data-ValueType': t.attr('data-ValueType'),
'data-Level':t.attr('data-Level')
});
var delElement = $('<a/>', {
text: 'X',
href: '#',
'class': 'del-criteria'
});
if ($('#' + currentTabs).parent().css('display') === 'block') {
var aElement = $('<a/>', {
text: tabString,
'class': 'a-criteria'
});
} else {
var aElement = $('<a/>', {
text: searchString,
'class': 'a-criteria'
});
}
var spanElement = $('<span/>', {
text: ' ' + t.attr('data-Value')
});
delElement.appendTo(divElement);
spanElement.appendTo(divElement);
// remove criteria if tab is not empty
if ($('#' + currentTabs).parent().css('display') === 'block') {
clb.el.criteriaForm.find('ul').find('.data-tab').each(function () {
var li = $(this);
if (li.attr('data-name') === searchString && li.attr('data-group') !== idTab) {
li.remove();
}
});
t.parents('.partial-box').find('ul.search-criteria-list').not('#ul-' + currentTabs).find('input[type="checkbox"]').attr('checked', false);
}
if (clb.el.criteriaForm.find('ul').find('li').length) {
clb.el.criteriaForm.find('ul').find('li').each(function () {
var t = $(this);
if (t.attr('data-name') === searchString) {
element = t;
}
if (clb.el.searchName) {
t.attr('data-companyname', clb.el.searchName.val());
}
});
if (element) {
if (element.find('div').length) {
var orElement = $('<font/>', {
text: ' OR'
});
orElement.appendTo(spanElement);
}
//divElement.appendTo(element);
element.find('a.a-criteria').after(divElement);
} else {
var liElement = $('<li/>', {
'data-name': searchString
});
if ($('#' + currentTabs).parent().css('display') === 'block') {
liElement.addClass('data-tab');
liElement.attr('data-group', idTab);
}
if (clb.el.searchName) {
liElement.attr('data-companyname', clb.el.searchName.val());
}
aElement.appendTo(liElement);
divElement.appendTo(liElement);
liElement.appendTo(clb.el.criteriaForm.find('ul'));
}
} else {
var liElement = $('<li/>', {
'data-name': searchString
});
if (clb.el.searchName) {
liElement.attr('data-companyname', clb.el.searchName.val());
}
if ($('#' + currentTabs).parent().css('display') === 'block') {
liElement.addClass('data-tab');
liElement.attr('data-group', idTab);
}
aElement.appendTo(liElement);
divElement.appendTo(liElement);
liElement.appendTo(clb.el.criteriaForm.find('ul'));
}
t.attr('checked', true);
//clb.el.criteriaForm.parent().find('.btn').show();
//clb.el.criteriaForm.find('.title').show();
clb.el.criteriaForm.find('.no-criteria').hide();
} else {
var li = clb.el.criteriaForm.find('#div_' + t.attr('id')).parents('li:first');
clb.el.criteriaForm.find('#div_' + t.attr('id')).remove();
t.attr('checked', false);
if (li.find('div.criteria-item-checked').length === 0) {
li.remove();
}
if (clb.el.criteriaForm.find('li').length === 0) {
//clb.el.criteriaForm.parent().find('.btn').hide();
clb.el.criteriaForm.find('.no-criteria').show();
}
clb.checkLastDiv();
}
},
I was able to resolve it by changing the code as below . The problem was I had mentioned div id = childSubsCheckBoxes and the dom was not able to identify all the checkboxes.
I resolved it by changing the div id property to class.. that is div class=childSubsCheckBoxes and use the below code . It worked like magic.
clb.el.criteriaList.find('.childSubsCheckBoxes').each(function () {
var checkbox = clb.el.criteriaList.find('.childSubsCheckBoxes').find('input[type=checkbox]');
checkbox.prop('disabled',true);
});