2013-02-27 88 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

首先給選擇框和id通過添加:
sel.id = 'LOCsel' +迭代;

然後onClick事件處理添加到每個選擇框:
sel.onclick =函數(){
onLOCSelected(迭代);
};

然後添加此功能:
功能onLOCSelected(UNIQUEID)
{
//使用UNIQUEID(迭代,你叫它)
//評估所選項目&相應切換意見輸入的值
}

希望對您有所幫助!

+0

這是我創建的功能,但它仍然無法正常工作。函數onLOCSelected(迭代) var loc = document.getElementById('LOCsel')[iteration]; var strUser = loc.options [loc.selectedIndex] .text; (strUser ='其他'){document.getElementById('Comments')[iteration] .disabled = true; } else { document.getElementById('Comments')。disabled = false; \t} return true; } – tnbumbray 2013-02-27 19:26:37

+0

DOM中的元素有一個唯一的ID,應該由該ID查找。你沒有正確地查找元素,你應該看起來像這樣: document.getElementById('LOCsel'+迭代) document.getElementById('評論'+迭代) 我猜你對這是相當新的,我最好的建議是在Chrome中運行你的網站,打開開發者工具並使用腳本選項卡和控制檯來調試你的JS。這應該會幫助你學習... – JoelH 2013-02-27 19:54:01

+0

非常感謝。它終於起作用了。 – tnbumbray 2013-02-28 16:48:26