当用户单击 GetData
按钮时,我正在html表中显示动态JSON数据。
当用户单击 GetData
按钮时,我从后端中成功获取了两行值,并成功显示在表中。
最初,在加载html表时,第一列 Year
被禁用,而 Mortgage Type
列则可编辑。当用户
点击GetData
按钮,通过禁用 Mortgage Type
列并启用
“ Year
”列。问题是我只想为我从Year
获得信息的行启用 column
backend
/ strong>(在我的情况下,前两行)。
以下是我用于在用户点击 GetData
按钮时为前两行启用Year下拉列表的示例代码,但对所有行均启用: >
$('#loanTable tr ').each(function(){
for (var i = 0; i < mortageType.length; i++) {
$('td:eq(0) select', this).removeAttr("disabled");//last row enabled
}
});
演示链接:https://plnkr.co/edit/Fon9NDQA0q660wSz0RHv?p=preview
在上面的演示链接中,当用户单击 GetData
按钮时,我只想为前两个启用 Year
字段我了解了信息的行,其余的行应被禁用。
-编辑-
在一种情况下,以下代码失败。当我从任何行的后端获取空值时,我不应启用或禁用任何字段,并用红色突出显示该行,在下面显示的演示链接中可以正常工作。
https://plnkr.co/edit/fDmFtxdxKk8eeswx4lGT?p=preview
但是当没有空值时,相同的代码无法启用Year列。 请查看没有空值的更新的代码删除器,失败,以启用第一行的Year下拉列表字段:
https://plnkr.co/edit/7pB8q54JavFlCm5Y8gF8?p=preview
当用户单击GetData按钮时,应该启用前两行的Year下拉列表字段,而对于没有数据的后两行应禁用Year。下拉列表字段。
示例代码段:
for (var i = 0; i < mortageType.length; i++) {
j = j + 1;
document.getElementById("mortageType" + j).value = mortageType[i].code;
document.getElementById("loanNum" + j).innerText = loanNum[i].code;
document.getElementById("status" + j).innerText = status[i].code;
//to enable the Year field for the rows we are fetching the data
// $(document.getElementById("year" + j)).removeAttr('disabled');
if(loanNum[i].code == null || mortageType[i].code == null || status[i].code==null ){
console.log("row has null value");
$('#status' + j).parent().parent().css({'border':'red'});
enablingFlag = false; //If any field value is null make the flag as false
}
if(enablingFlag){ //enters the if condition if there are no null values
$('#loanTable input, #loanTable select').attr("disabled", "disabled");
$(document.getElementById("year" + j)).removeAttr('disabled');
}
}
答案 0 :(得分:0)
也许您可以简化并摆脱迭代和删除Disabled属性的整个块。
您已经在迭代。。因此,请每年选择一个ID,该ID遵循您用于其他控件的模式。 year1, year2, year3, year4
然后在javascript的第24行或附近添加以下内容:
$(document.getElementById("year" + j)).removeAttr('disabled');
html元素ID仍然应该是唯一的,因此您希望以任何一种方式修复那些年份选择框。
这是一个说明问题的人。