2010-07-02 41 views
2

好吧我有一個問題,可能很簡單。但我似乎無法理解發生了什麼。我有3個安全問題下拉菜單。我在ASPX頁面上提供了javascript,當您選擇一個問題(因此您無法在其他2個框中重新選擇問題)時刪除問題/重新填充它們。當用戶使用已經選擇的問題編輯他們的個人資料時,這非常有用。但是,當用戶首先選擇所有三個框在「selectedIndex 0」列出「請選擇問題」的問題時,onChange不會觸發。該功能甚至不會。我認爲這與從選擇的索引爲0的變化有很大關係。我已經調試過這個東西,它甚至沒有輸入函數。我甚至設置了onchange動作來刷新警報。看起來有什麼問題,當我嘗試從0的選定索引進行更改時,有任何想法?DropDownList onChange不在selectedindex工作0

+1

那麼,如果用戶沒有** **改變什麼,爲什麼會瀏覽器觸發「更改」事件?也許我誤解了這個問題。 – Pointy 2010-07-02 15:10:32

+0

仔細檢查您的訂閱 – MQS 2010-07-02 15:11:35

+0

那麼它啓動頁面加載,因爲如果用戶已經保存了問題該怎麼辦?這樣就可以將下拉項目從其他項目中移除2.這通過重新填充列表的函數來執行,然後比較每個問題並從每個框中移除相應的問題。但是,由於某些原因,當所選索引爲0或「請選擇一個問題」時,我的c#代碼中的onChange命令不會觸發該函數。 – Tom 2010-07-02 15:14:47

回答

0

也許我在這裏從你正在描述的東西丟失的東西.. onChanged事件將只會觸發如果selectedIndex 更改。因此,如果您在selectedIndex(0)處下拉下拉列表並重新選擇第一個onChange項目將不會觸發。

-1

當您重新填充列表時,如果您使用另一個表示問題的項目替換索引爲0的項目(「請選擇一個問題」),那麼您的事件將不會觸發。

要麼

您保存的第一個項目作爲一個沒有選擇的指數(所以你的下拉菜單會一直顯示「請選擇一個問題」,並根據用戶需要改變它)。或

2.您炒掉事件在完成再植的下拉菜單後,手動:

<html> 
<head> 
<script type="text/javascript"> 

function sOnChange(){ 
    alert('Changed'); 
} 

function replaceItems(){ 
    var dropDown = document.getElementById('s'); 
    dropDown.innerHTML = ""; 
    for(var x=0;x<5;x++){ 
     var opt = document.createElement("option"); 
     opt.value = x; 
     opt.appendChild(document.createTextNode("New options" + (x+1))); 
     dropDown.appendChild(opt); 
    } 
    dropDown.onchange(); 
} 
</script> 
</head> 
<body> 
    <input type="button" onclick="replaceItems();" value="Replace Items"/> 
    <select id="s" onchange="sOnChange()"> 
     <option>Press the button Please</option> 
    </select> 
</body> 
</html> 
0

第一的選擇標籤的選項(指數0)默認情況下已經選擇。這就是爲什麼你的onChange事件再次被選中時不會觸發的原因。

this popular question的答案可能會有所幫助。爲了讓您的觸發事件,則選擇任何選項時,例如,您可以更改默認值以這樣的「無選擇的選項」:

document.getElementById("mySelectTagId").selectedIndex = -1; 
相關問題