2010-02-18 84 views
0

選擇後,我有一對夫婦選擇元素:設置一個下拉從另一個

<select name="empID" onchange='setSupervisor(this);'> 
    <option value="111" sid="222">Eric Employee</option> 
    ... 
</select> 

<select name="supervisorID"> 
    <option value="333">Susie Supervisor</option> 
    <option value="222">Stan Supervisor</option> 
</select> 

而且javascript功能:

function setSupervisor(sender) 
{ 
    ?? 
} 

如何設置監督員下拉用戶從選擇後員工下拉?這裏棘手的部分(至少對我來說)是不得不使用自定義sid而不是員工下拉列表中的值。

+0

你爲什麼不使用'sid'作爲選項的值的價值?添加您自己的自定義'sid'屬性不是有效的HTML(儘管您仍然可以使用'

+0

我沒有使用sid作爲選項的值,因爲它們是不同的數字。 「empID」中的值本質上是員工編號,「sid」是管理員標識。如果它不是有效的HTML,那麼我將不得不嘗試另一種方式。 – user75 2010-02-18 16:44:30

回答

0
function setSupervisor(sender) { 
    var selectedOption = sender.getElementsByTagName("option")[sender.selectedIndex]; 
    var sid = selectedOption.getAttribute("sid"); 

    var supervisorSelect = document.getElementsByName("supervisorID")[0]; 
    for (var i = 0, len = supervisorSelect.options.length, option; i < len; ++i) { 
     option = supervisorSelect.options[i]; 
     if (option.value == sid) { 
      option.selected = true; 
      return; 
     } 
    } 
} 
+0

沒有錯誤,但它沒有設置管理員選擇。 – user75 2010-02-18 17:15:59

+0

真的嗎?在我測試的所有瀏覽器(Firefox 3.5.7,IE 7,Chrome)中完美工作。我爲第一個選擇添加了一個虛擬選項,以便它有兩個選項,因此onchange可以觸發。 – 2010-02-18 18:13:37

+0

你是對的,它確實有效。我有另一種類型的問題。謝謝您的幫助! – user75 2010-02-18 18:29:47

0

試試這個:

var empID = document.getElementsByName("empID").item(0); 
var supervisorID = document.getElementsByName("supervisorID").item(0); //This becomes a bit easier if you set an ID as well as a name in your HTML  
var index = empID.selectedIndex; 
var sid = empID.options[index].getAttribute("sid"); 
for(var i=0; i<supervisorID.options.length; i++) 
{ 
    if(supervisorID.options[i].value == sid) 
    { 
     supervisorID.selectedIndex = i; 
     break; 
    } 
} 
+0

無論選擇誰作爲員工,將「int i」更改爲「var i」,然後alert(supervisorID.selectedIndex)始終爲0。 – user75 2010-02-18 17:18:22

+0

根據Tim Down的回答,我編輯了它。看看是否有效。如果沒有,在設置sid後,插入警報(sid)以查看它獲得的值。 – ristonj 2010-02-18 18:03:15