2010-03-09 104 views
4

我從database.i填充國家下拉列表需要從下拉列表中選擇一個值,並通過使用JavaScript分配給文本框。如何從使用javascript的asp.net中的dropdownlist獲取選定的值?

代碼:

var textboxId = document.getElementById("txtCountry"); 
var dropdownListId =document.getElementById("ddlLocation"); 

var e = document.getElementById("ddlLocation"); 
var strUser = e.options[e.selectedIndex].value; 

document.getElementById(textboxId).value = strUser;  
document.getElementById(textboxId).focus(); 

通過這樣做,我得到的錯誤.ANY的解決方案?

問候 拉維

+0

你有什麼錯誤? – 2010-03-09 12:17:06

+0

我剛編輯你的代碼縮進,你有他們錯誤的方式。如果你想讓它顯示在一個代碼塊中,然後用四個(或更多)空格縮進這一行。 – slugster 2010-03-09 12:56:25

+0

其實我已經修好了,就像你一樣。我不知道爲什麼該操作已回滾? – anthares 2010-03-09 12:59:08

回答

5

你的代碼是錯誤的,看看那裏我做了修改,以相同的代碼:

var textboxId = document.getElementById("txtCountry"); 
var e = document.getElementById("ddlLocation"); 
var strUser = e.options[e.selectedIndex].value; 
textboxId.value = strUser;  
textboxId.focus(); 

你做了什麼,你選擇了你的文本框,並且JS向你返回了該文本框的一個DOM元素,並且你想通過將文本框的DOM傳遞給getElementById()函數來填充它。

這裏是它打破了:

document.getElementById(textboxId).value = strUser; 

要使用getElementById()方法,你傳遞一個元素的ID字符串值。

希望這會有所幫助。

+0

嗨Elite, 我已經綁定下拉列表從數據庫和分配爲datatextfield =「countryname 「 datavaluefield =」id「 ab ove情況下它是retrive id。但我需要獲得文本。 如果我更改datavaluefield然後它工作。 – kumar 2010-03-09 12:40:38

+0

這就是我說的:) – slugster 2010-03-09 12:57:21

+0

對不起slugster,我沒有檢查你的答案! :-)偉大的思想家都認爲。 – 2010-03-09 13:01:37

2

與嘗試:

document.getElementById('<%=txtCountry.ClientID%>').value 

var textBox = document.getElementById('<%=txtCountry.ClientID%>'); 
textBox.value = strUser; 

這是因爲在生成的文檔中的HTML元素的ID不與ID匹配您已在您的代碼中分配。要在html中獲得分配給您的控件的id,您可以使用下拉菜單的ClientID屬性。

另一個問題是,您將您的html元素分配給變量,然後使用getElementById函數,這是無效的調用。

這在即將發佈的ASP.NET 4中進行了更改。

希望有幫助!

+0

我收到錯誤:document.getElementbyID(..)爲空或不是對象如果我使用上面的語句。 – kumar 2010-03-09 12:09:00

+0

可能是您錯誤輸入了id。它應該是下拉控件的ascx/aspx文件中的ID。例如:如果你發佈你的asp.net代碼會有幫助。 – anthares 2010-03-09 12:12:15

+0

kumar 2010-03-09 12:19:11

0

這兩條線:

document.getElementById(textboxId).value = strUser;  
document.getElementById(textboxId).focus(); 

是錯了。如果你前行的實際工作:

var textboxId = document.getElementById("txtCountry"); 

那麼你有什麼所謂 textboxId實際上將文本框控件,所以你會使用控制,而不是字符串標識符做的getElementById

要跟隨什麼@anthares表示;試試這個:

var textboxId = '<%=txtCountry.ClientID%>'; 
alert('My textbox id is: ' + textboxId); 

,並確保你得到的文本框中正確的ID(請記住,這將ASP.Net將被改寫的,至少確保你沒有得到什麼)。然後,當你做一個的document.getElementById您在使用前需要檢查結果:

var myTextBox = document.getElementById(textboxId); 
if (myTextBox !== null) { 
    ...now i can access the properties... 
} 
+0

我得到正確的文本框的ID – kumar 2010-03-09 12:24:03

+0

然後請參閱我的答案的第一部分關於兩條線是錯誤的 – slugster 2010-03-09 12:54:10

相關問題