2010-04-26 53 views

Trả lời

19

Tôi không nghĩ Prototype có bất kỳ phím tắt nào đó cho bạn, vì vậy:

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

... mang đến cho bạn innerHTML của các tùy chọn đã chọn, hoặc undefined nếu có ai sánh kịp.

Nếu bạn thích, bạn có thể sử dụng Element#addMethods để xác định điều này một lần và có nó có sẵn trên tất cả các hộp chọn của bạn:

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 
    }; 
})()); 

Cách sử dụng:

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

tôi đã sử dụng một hàm có tên khi xác định cái đó. Nếu bạn không bận tâm về chức năng đặt tên (Tôi, tôi always use them), bạn có thể làm cho nó một chút đơn giản hơn:

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

Nếu bạn đang sử dụng thử nghiệm, bạn có thể sử dụng:

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

Cảm ơn :) làm việc tốt :) – Elangovan

+0

Đây là câu trả lời đúng. Hoàn hảo – Apeiron

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

Cách sử dụng:

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

hoặc

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

hoặc (khi sử dụng nguyên mẫu hoặc jquery)

getSelectedValue($('mySelect')); 
+1

Điều này không trả về giá trị văn bản, nhưng thuộc tính 'giá trị' của mục đã chọn. OP đã yêu cầu giá trị văn bản của tùy chọn đã chọn. – cjc343

5

Tôi xin lỗi nếu tôi đã muộn với câu trả lời này, nhưng tôi đã nhìn vào cùng một vấn đề và tôi đã không hài lòng với câu trả lời này, vì vậy i đào cho một câu trả lời tốt hơn:

Nguyên mẫu có bộ chọn sau mà bạn có thể sử dụng để có được giá trị được chọn trong danh sách của bạn: $ F. Vì vậy, trong tình hình bạn Ví dụ, nó nên làm việc đoạn mã sau:

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

này là đẹp hơn nhiều .. là có một cách để nghiền mà cùng với một 'này' được tạo ra bởi một onchange? – Damon

+1

nm .. Tôi đang nhận được không xác định trên đang cố gắng sử dụng này .. – Damon

+0

Tôi không chắc chắn nếu chức năng này được hỗ trợ cho tất cả các trình duyệt, vì vậy bạn có thể kiểm tra xem, nếu không bạn có thể đã làm sai, gửi một fiddle để tôi có thể giúp bạn – decebal

0

Chọn lựa chọn thứ hai:

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

tôi cần phải chọn các thành phố giá trị mục.

Các vấn đề liên quan