Как получить текст выбранного элемента в элементе управления select?
<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 ответов
Я не думаю, что 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();
я использовал именованную функцию при определении этого. Если вас не беспокоят именованные функции (I am, I всегда используйте их), вы можете сделать это немного проще:
Element.addMethods("SELECT", {
getSelectedOptionHTML: function(element) {
if (!(element = $(element))) return;
var index = element.selectedIndex;
return index >= 0 ? element.options[index].innerHTML : undefined;
}
);
Если вы используете Prototype, вы можете использовать:
var text = $('serverDropList')[$('serverDropList').selectedIndex].text;
извините, если я опоздал с этим ответом, но я рассматривал ту же проблему, и я не был удовлетворен этим ответом, поэтому я вырыл лучший ответ:
Prototype имеет следующий селектор, который вы можете использовать для того, чтобы cu получил выбранное значение вашего списка: $F. Итак, в Примере с вами, он должен работать со следующим кодом:
$F('serverDropList'); -- this for getting the value
$F('serverDropList').text; -- this for getting the text
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'));
или (при использовании prototype или jquery)
getSelectedValue($('mySelect'));
выберите второй вариант:
<select onchange="alert(getSelectedValue(this););" id="mySelect">
<option> value="1" city="chicago"> one </option>
<option> value="2" city="orlando"> two </option>
</select>
Мне нужно выбрать город значения элемента.