如何在选择控件中获取所选项目的文本?

时间:2010-04-26 23:53:44

标签: javascript prototypejs

 <select name="DropList" id="serverDropList"> 
  <option selected="selected" value="2">server1:3000</option> 
  <option value="5">server3:3000</option> 
 </select> 

我知道在原型中我可以通过$('serverDropList').value获得价值,但我怎样才能得到“server1:3000”?

5 个答案:

答案 0 :(得分:24)

如果您使用的是原型,可以使用:

var text = $('serverDropList')[$('serverDropList').selectedIndex].text;

答案 1 :(得分:19)

我不认为Prototype有任何快捷方式可以帮助你,所以:

var box = $('serverDropList');
var text = box.selectedIndex >= 0 ? box.options[box.selectedIndex].innerHTML : undefined;

...为您提供所选选项的innerHTML,如果没有,则为undefined

如果您愿意,可以使用Element#addMethods定义一次并在所有选择框中使用它:

Element.addMethods("SELECT", (function() {
    function getSelectedOptionHTML(element) {
        if (!(element = $(element))) return;
        var index = element.selectedIndex;
        return index >= 0 ? element.options[index].innerHTML : undefined;
    }

    return {
        getSelectedOptionHTML: getSelectedOptionHTML
    };
})());

用法:

var text = $('serverDropList').getSelectedOptionHTML();

我在定义时使用了命名函数。如果你不关心命名函数(我,我always use them),你可以让它更简单:

Element.addMethods("SELECT", {
    getSelectedOptionHTML: function(element) {
        if (!(element = $(element))) return;
        var index = element.selectedIndex;
        return index >= 0 ? element.options[index].innerHTML : undefined;
    }
);

答案 2 :(得分:5)

如果我迟到了这个答案,我很抱歉,但是我正在研究同样的问题,我对这个答案并不满意,所以我挖了一个更好的答案:

Prototype具有以下选择器,您可以使用它来获取列表的选定值:$ F. 因此,在您的示例情况中,它应该使用以下代码:

$F('serverDropList'); -- this for getting the value
$F('serverDropList').text; -- this for getting the text

答案 3 :(得分:2)

function getSelectedValue( obj ) {
    return obj.options[obj.selectedIndex].value;
}

用法:

<select onchange="alert(getSelectedValue(this););" id="mySelect">
<option value="1">one</option>
<option value="2">two</option>
</select>

getSelectedValue(document.getElementById('mySelect'));

或(当使用原型或jquery时)

getSelectedValue($('mySelect'));

答案 4 :(得分:0)

选择第二个选择:

<select onchange="alert(getSelectedValue(this););" id="mySelect">
  <option> value="1" city="chicago"> one </option>
  <option> value="2" city="orlando"> two </option>
</select>

我需要选择项目值城市。