Отключить выбранную опцию первого поля выбора во втором окне выбора - PullRequest
0 голосов
/ 11 ноября 2019

Я хочу найти данные ученика, указав его имя и диапазон оценок. Учитель может добавить новый предмет с помощью кнопки «Добавить» и удалить предмет. Также тема / опция, которая уже была выбрана в предыдущей строке, отключится в следующей новой строке.

  1. Вот HTML-код
<button type="button" class="btn btn-bricky btn-sm" onclick="deleteRow('dataTable')"><span class="glyphicon glyphicon-remove"></span> Delete Row</button>

<table id="dataTable" class="table table-striped"  style="font-size: 12px" >
  <tr>
    <td><input type="checkbox" name="chk"/></td>
    <td>
        <select name="subject" id="subject">
                          <option value="Math">Math</option>
                          <option value="Physic">Physic</option>
                          <option value="Chemistry">Chemistry</option>
                          <option value="Biology">Biology</option>
                </select>
Score Min : <input type="number" name="comsMin" style="width:70px" min="0" max="100"/>
Max :  <input type="number" name="comsMax" style="width:70px" min="0" max="100"/></td>

</tr>
</table>

А здесьэто код JavaScript

function addRow(tableID) {

            var table = document.getElementById(tableID);

            var rowCount = table.rows.length;
            var row = table.insertRow(rowCount);

            var colCount = table.rows[0].cells.length;

            for(var i=0; i<colCount; i++) {

                var newcell = row.insertCell(i);

                newcell.innerHTML = table.rows[0].cells[i].innerHTML;
                //alert(newcell.childNodes);
                switch(newcell.childNodes[0].type) {
                    case "#text":
                            newcell.childNodes[0].value = "";
                            break;
                    case "#checkbox":
                            newcell.childNodes[0].checked = false;
                            break;
                    case "#select-one":
                            newcell.childNodes[0].selectedIndex = 0;
                            break;
                }
            }
        }
//--------------
        function deleteRow(tableID) {
            try {
            var table = document.getElementById(tableID);
            var rowCount = table.rows.length;

            for(var i=0; i<rowCount; i++) {
                var row = table.rows[i];
                var chkbox = row.cells[0].childNodes[0];
                if(null != chkbox && true == chkbox.checked) {
                    if(rowCount <= 1) {
                        alert("Cannot delete all the rows.");
                        break;
                    }
                    table.deleteRow(i);
                    rowCount--;
                    i--;
                }


            }
            }catch(e) {
                alert(e);
            }
        }

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

Возможно ли это? Вот JS скрипка

1 Ответ

0 голосов
/ 11 ноября 2019

У нас может быть отдельная таблица для хранения набора данных в скрытом режиме и сохранения в нем состояния выбора. Вместо скрытого элемента вы также можете поддерживать состояние в javascript переменных.

function syncModdelAdd(tableID){
    //  Get the available selections
  var table = document.getElementById(tableID);
  var rowCount = table.rows.length;

  var dataTable = document.getElementById('dataTable');

  for(var i=0; i<rowCount; i++){
    var selectedIndex = table.rows[i].cells[1].childNodes[1].selectedIndex;
        dataTable.rows[0].cells[1].childNodes[1].options[selectedIndex].disabled=true;
  }
}

function syncModelDelete(selectedIndex){
  var dataTable = document.getElementById('dataTable');  
    dataTable.rows[0].cells[1].childNodes[1].options[selectedIndex].disabled=false;

  var table = document.getElementById('resultTable');
  var totalRows = table.rows.length;
  table.rows[totalRows-1].cells[1].childNodes[1].options[selectedIndex].disabled=false;
}

Fiddle Link: https://jsfiddle.net/2tfacL9k/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...