2013-02-27 2 views
0

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

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

<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> 

ответ

0

Во-первых дают поле выбора и идентификатор, добавив:
sel.id = 'LOCsel' + итерации;

Затем добавить OnClick обработчик события для каждого поле выбора:
sel.onclick = функция() {
onLOCSelected (итерации);
};

Затем добавьте эту функцию:
функция onLOCSelected (UniqueID)
{
// Использование UniqueID (итерации, как вы назвали его)
// Вычислить значение выбранного элемента & переключения ввода комментариев соответственно
}

Надеюсь, что это поможет!

+0

Вот функция, которую я создал, но она все еще не работает. 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

+0

Элементы в DOM имеют уникальный идентификатор и должны быть просмотрены этим идентификатором. Вы не просматриваете элементы должным образом, вы должны искать их так: document.getElementById ('LOCsel' + iteration) document.getElementById ('Комментарии' + итерация) Я предполагаю, что вы довольно новичок в этом , мой лучший совет - запустить свой сайт в Chrome, открыть инструменты для разработчиков и использовать вкладку сценариев и консоль для отладки вашего JS. Это должно помочь вам узнать ... – JoelH

+0

Большое вам спасибо. Это, наконец, работает. – tnbumbray

Смежные вопросы