Я динамически добавляю строки в таблицу. Каждая строка имеет поля ввода, а также выпадающие поля. Когда я выбираю «Другое» в раскрывающемся списке, я хочу отключить поле «Комментарии». Как проверить раскрывающийся список динамически добавленной строки?Проверьте выбранное значение динамически созданных выпадающих списков
Следующий мой код. Вставки строк отлично работают, но я не знаю, как проверить выбранное значение раскрывающегося списка.
<script language="javascript" type="text/javascript">
function addRow() {
var tbl = document.getElementById('tblSample');
var lastRow = tbl.rows.length;
var iteration = lastRow;
var row = tbl.insertRow(lastRow);
var cellLeft = row.insertCell(0);
var textNode = document.createTextNode(iteration-3);
cellLeft.appendChild(textNode);
var cellRightSel = row.insertCell(1);
var sel = document.createElement('select');
sel.name = 'LOCsel' + iteration;
sel.options[0] = new Option('---Any---', '0');
sel.options[1] = new Option('Level 0.5: Early Intervention', '1');
sel.options[2] = new Option('Level I: Outpatient', '2');
sel.options[3] = new Option('Level I.D: Outpatient-Detox', '3');
sel.options[4] = new Option('Level II.1: Intensive Outpatient', '4');
sel.options[5] = new Option('Level II.5: Partial Hospitalization', '5');
sel.options[6] = new Option('Level II.D: IOP-Detox', '6');
sel.options[7] = new Option('Level III.1: Halfway House', '7');
sel.options[8] = new Option('Level III.3: Long-Term Residential Care', '8');
sel.options[9] = new Option('Level III.5: Therapeutic Community', '9');
sel.options[10] = new Option('Level III.7: Medically Monitoried Inpatient(ICF)', '10');
sel.options[11] = new Option('Level III.7.D: Med.Mon.Inpatient(ICF)-Detox', '11');
sel.options[12] = new Option('Other', '12');
cellRightSel.appendChild(sel);
var cellRights = row.insertCell(2);
var els = document.createElement('input');
els.type = 'text';
els.name = 'Comments' + iteration;
els.id = 'Comments' + iteration;
els.size = 30;
cellRights.appendChild(els);
var cell8 = row.insertCell(9);
var element8 = document.createElement('input');
element8.type = 'text';
element8.name = 'txtRow'+ iteration;
element8.id = 'txtRow'+ iteration;
cell8.appendChild(element8);
element8.size = 20;
}
function validateLOC(){
var table = document.getElementById('tblSample');
var rowCount = table.rows.length;
for (var i=0; i < rowCount; i++) {
var loc = table.rows[i].cells[1].getElementById('LOCsel')[i];
var strUser = loc.options[loc.selectedIndex].text;
if (strUser = 'Other'){
document.getElementById('Comments').disabled = true;
document.getElementById('Comments').style.backgroundColor = '#cccccc';
rowCount--;
i;
}
else {
document.getElementById('Comments').disabled = false;
rowCount--;
i;
}
return true;
}
}
</script>
Вот функция, которую я создал, но она все еще не работает. function onLOCSelected (итерация) { var loc = document.getElementById ('LOCsel') [итерация]; var strUser = loc.options [loc.selectedIndex] .text; if (strUser = 'Other') { document.getElementById ('Комментарии') [итерация] .disabled = true; } else { document.getElementById ('Комментарии'). Disabled = false; \t} return true; } – tnbumbray
Элементы в DOM имеют уникальный идентификатор и должны быть просмотрены этим идентификатором. Вы не просматриваете элементы должным образом, вы должны искать их так: document.getElementById ('LOCsel' + iteration) document.getElementById ('Комментарии' + итерация) Я предполагаю, что вы довольно новичок в этом , мой лучший совет - запустить свой сайт в Chrome, открыть инструменты для разработчиков и использовать вкладку сценариев и консоль для отладки вашего JS. Это должно помочь вам узнать ... – JoelH
Большое вам спасибо. Это, наконец, работает. – tnbumbray