2016-09-30 33 views
0

我有两个依赖下拉列表(物化选择)的国家和州。选择国家我得到尊重的国家使用JavaScript,我添加选项状态选择,但它显示空状态下拉...但是当我把警报,值正确。任何人都可以帮我解决这个问题吗?实现选择集动态选项问题

编辑: 删除后显示使用检查:无选择我得到像下面的..实际html选择下拉得到正确填充,但物化选择不显示或填充为什么? See image here
HTML代码:

<select name="country" id="country" onchange="setStates();" style="width:100px; font-weight:bold;" > 
    <option value="">Select</option> 
     /* Country options here */ 
    </select> 
<select name="state" id="state" style="width:100px; font-weight:bold;" > 
    </select> 

Javascript代码:

function setStates() { 

    cntrySel = document.getElementById('country'); 
    stateList = states[cntrySel.value]; 

    changeSelect('state', stateList, stateList); 
} 

function changeSelect(fieldID, newOptions, newValues) { 
    selectField = document.getElementById(fieldID); 
    selectField.options.length = 0; 

    for (i=0; i<newOptions.length; i++) { 
    selectField.options[selectField.length] = new Option(newOptions[i], newValues[i]); 
    } 

} 

回答

0

这应该工作:

function setStates() { 

    cntrySel = document.getElementById('country'); 
    stateList = states[cntrySel.value]; 

    changeSelect('state', stateList, stateList); 
} 

function changeSelect(fieldID, newOptions, newValues) { 
    selectField = document.getElementById(fieldID); 
    selectField.options.length = 0; 

    for (i=0; i<newOptions.length; i++) { 
    selectField.innerHTML= "<option value=\"" + newValue[i] + "\">" + newOption[i] + "</option>" 
    } 

} 
+0

对不起,没有工作...仍然有空下拉..请检查我的问题编辑 –

+0

请检查图像,在物化选择只有没有得到填充,但实际的HTML选择正常工作 –

+0

你能告诉我们你的完整的代码? – Fralec

0

你必须重新初始化兑现选择,试试这个:

function setStates() { 

    cntrySel = document.getElementById('country'); 
    stateList = states[cntrySel.value]; 

    changeSelect('state', stateList, stateList); 
} 

function changeSelect(fieldID, newOptions, newValues) { 
    selectField = document.getElementById(fieldID); 
    selectField.options.length = 0; 

    for (i=0; i<newOptions.length; i++) { 
    selectField.options[selectField.length] = new Option(newOptions[i], newValues[i]); 
    } 
    // Materialize old version 
    $('#'+fieldID).material_select(); 
    // Materialize new version 
    $('#'+fieldID).select(); 

}