2012-10-18 33 views
-1

我有一個下拉列表作爲表單的一部分。它調用一個JavaScript函數作爲它的動作,其內容是幾個字符串之一。如何獲取HTML下拉框的內容?

在該函數中,我需要獲取用戶選擇的字符串。我遇到了一個函數,可以讓我得到所選項目的索引號,但是由於列表的內容可能有所不同,所以它實際上是無用的。有沒有一種方法可以讓我得到用戶輸入的實際字符串,可能是DOM和getElementById(),還是使用JQuery?

我考慮過使用文本框,但是這會引發與界面相關的錯誤。

+5

您在這裏使用一些模棱兩可的術語,你不顯示的代碼,這只是我們的化合物挑剔的困難,你需要什麼。是否需要獲取'.on('change')''

+0

這似乎是正確的。 – CalvinCopyright

+1

您可以使用'selectElement.options [selectElement.selectedIndex] .text'在所有瀏覽器中獲取所選選項的文本,其中* selectElement *是對select元素的引用。請注意,如果未選擇任何選項,則所選索引將爲-1,因此您可能首先要檢查'selectElement.selectedIndex> = 0'。 – RobG

回答

1

不太清楚你想要什麼,但是從我也許this is it明白:

HTML

<select> 
    <option value="1">This is the first one</option> 
    <option value="2">This is the second one</option> 
</select> 

的Javascript

$('select').on('change', function() { 
    alert($(this).find('option:selected').text()); 
}) 
0

編輯: 你似乎想要t他選擇的文本,而不是價值。

秒編輯: 在OP中使用Rob的建議,所以我們不需要迭代。

HTML

​<select name="myselect" id="myselect"> 
    <option value="alpha">one</option> 
    <option value="beta">two</option> 
    <option value="gamma">three</option> 
</select>​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​ 

JS

var mySelect = document.getElementById('myselect')​​​; //get our select by its ID 
mySelect.addEventListener('change', function(evt){ 
    return evt.target.options[evt.target.selectedIndex].text; 
}); 

注意的addEventListener不會在Internet Explorer 8的工作,下面,所以你需要使用的attachEvent。這應該會給你一個不錯的主意。 更多參考見https://developer.mozilla.org/en-US/docs/DOM/element.addEventListener