2014-10-29 69 views
0

我有3个动态下拉列表,这些下拉列表正在上一个下拉列表的onchange事件上填充。 onchange,我可以填充下拉列表,但是面临问题的地方在于,如果我从任何下拉列表中更改选择,新值将附加到后续的下拉列表中,而不是替换。每个onchange事件的动态下拉列表附加值

下面是我的代码:

Dropdown1: <select id="ddlFiles" onchange="GetNamedItems()"> 
       <option diasbled="disabled">Select File</option> 
      </select> 
Dropdown2: <select id="ddlNamed" onchange="GetColumns()"> 
Dropdown3: <select id="ddlColumn" onchange="GetColumnsY()"> 

function GetNamedItems() 
{ 
for (var i=0; i <namedItem.length;++i) 
{ 

    var list = document.getElementById('ddlNamed'); 
    var newListItem = document.createElement('OPTION'); 
    var listInfo=namedItem[i]; 

    var box = listInfo; 
newListItem.text = box; 
newListItem.value = box; 
list.add(newListItem); 
}} 

同样的下拉菜单中的其余部分。

+0

向我们展示的代码,否则我们不能给你正确的答案,只是猜测 - 你要么必须更改您的代码为'.html()'而不是'.append()'或使用'.empty()' – Spokey 2014-10-29 14:34:05

+0

已添加我的代码片段 – Rooney 2014-10-29 14:41:50

回答

0

工作的代码之前,使用一个.remove():

function GetNamedItems() { 

var list = document.getElementById('ddlNamed'); 

        $('#ddlNamed').find('option:gt(0)').remove(); 


for (var i = 0; i < namedItem.length; ++i) { 
var newListItem = document.createElement('OPTION'); 
var listInfo = namedItem[i]; 
var box = listInfo; 

newListItem.text = box; 
newListItem.value = box; 

list.add(newListItem); 

} 

} 
0

我昨天刚好有这个问题的表单重置功能。

的关键是:

$(select).empty(); 

,然后重新填充下拉菜单。 。 。

1

追加新的

function GetNamedItems() { 

    var list = document.getElementById('ddlNamed'); 
    list.innerHTML = '<option diasbled="disabled">Select File</option>'; 

    for (var i = 0; i < namedItem.length; ++i) { 
    var newListItem = document.createElement('OPTION'); 
    var listInfo = namedItem[i]; 
    var box = listInfo; 

    newListItem.text = box; 
    newListItem.value = box; 

    list.add(newListItem); 

    } 

} 
+0

Thanx Spokey为您的答复,其工作正常。但它也删除我的第一项下拉,即“选择”。我怎样才能保留我的第一个项目,然后刷新下拉菜单。 – Rooney 2014-10-30 06:22:15

+0

@罗马你可以创建选项元素并追加它,或者只是将它写入内部html – Spokey 2014-10-30 07:18:51

0

不知道你的问题之前删除的内容。尝试追加新的

$(select).remove();