仅对包含数据的行启用下拉列表字段(无法正常工作)

时间:2018-11-30 17:59:35

标签: javascript jquery html-table

当用户单击 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');
                 }

            }

1 个答案:

答案 0 :(得分:0)

也许您可以简化并摆脱迭代和删除Disabled属性的整个块。

您已经在迭代。。因此,请每年选择一个ID,该ID遵循您用于其他控件的模式。 year1, year2, year3, year4

然后在javascript的第24行或附近添加以下内容:

$(document.getElementById("year" + j)).removeAttr('disabled');

html元素ID仍然应该是唯一的,因此您希望以任何一种方式修复那些年份选择框。

这是一个说明问题的人。

https://plnkr.co/edit/dBDlBrc3CVPA46aMT6OA?p=preview