Включение поля раскрывающегося списка только для строк, в которых есть данные (работает не так, как ожидалось) - PullRequest
0 голосов
/ 30 ноября 2018

Я отображаю динамические данные JSON в HTML-таблице, когда пользователь нажимает кнопку GetData.

Когда пользователь нажимает кнопку GetData Iполучаю две строки значений из бэкэнда, которые я успешно показываю в таблице.Первоначально при загрузке html-таблицы первый столбец Year отключается, а столбец Mortgage Type можно редактировать.Когда пользователь нажимает кнопку GetData, я показываю в таблице информацию о двух строках, отключая столбец Mortgage Type и включая столбец "Year".Проблема Я хочу включить Year column только для строк, для которых я получил информацию от backend (первые две строки в моемcase).

Ниже приведен пример кода, который я использовал для включения раскрывающегося списка Год для первых двух строк, когда пользователь нажимает кнопку GetData, но он активируется для всех строк.:

$('#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 поле только для первых двух строк, для которых я получил информацию, остальные строки должны быть отключены.

- EDITED -

Код ниже приведенодин сценарий.Когда я получаю нулевые значения из бэкэнда в любой строке, я не должен включать или отключать какие-либо поля и выделять строку красным цветом, который отлично работает в демонстрационной ссылке, показанной ниже.

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

Но тот же код не может включить столбец Год , когда нет нулевых значений.Пожалуйста, смотрите обновленный плункер без нулевых значений, не удалось , чтобы включить в первом поле поле раскрывающегося списка Год:

https://plnkr.co/edit/7pB8q54JavFlCm5Y8gF8?p=preview

Когда пользователь нажимает кнопку GetData, раскрывающийся список Годполя списка для первых двух строк должны быть включены и отключены для последних двух строк, для которых данные недоступны ..

Пример кода:

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 голосов
/ 30 ноября 2018

Может быть, вы могли бы упростить и избавиться от всего блока, который выполняет итерацию и удаляет атрибут disabled.

Вы уже выполняете итерацию. Поэтому каждый год выбирайте для выбора идентификатор, соответствующий шаблону, который вы используете длядругие элементы управления.year1, year2, year3, year4

затем в строке 24 вашего javascript или около нее добавьте следующее:

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

Идентификаторы элементов HTML должны быть уникальными в любом случае, так что вы захотитечтобы исправить эти поля выбора, в любом случае.

Вот плункер, иллюстрирующий его.

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

...