<select name="DropList" id="serverDropList">
<option selected="selected" value="2">server1:3000</option>
<option value="5">server3:3000</option>
</select>
我知道在原型中我可以通过$('serverDropList').value
获得价值,但我怎样才能得到“server1:3000”?
答案 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>
我需要选择项目值城市。