2010-07-14 44 views

Trả lời

124

jQuery .val()

var foo = $('#multiple').val(); 
+59

Vui nhìn lại những câu hỏi cũ và thấy câu trả lời sai được chọn rất nhiều lần. Rõ ràng điều này không nhận được 'các giá trị' vì OP đã yêu cầu như câu trả lời 'đúng' bên dưới. – Tomas

+7

Các IDE như PyCharm hiện đang được sử dụng như thế này, hiển thị các cảnh báo như 'Sử dụng JQuery kém hiệu quả', đó là điều khiến tôi di chuyển qua câu trả lời này. : o) –

+0

Không cần phải tạo một đối tượng JQuery một lần nữa bên trong hàm, đó là vô nghĩa bởi vì bạn có thể sử dụng javascript thuần túy. Chỉ cần làm 'foo [i] = selected.value;' –

263

Sử dụng .val() chức năng trên một danh sách chọn nhiều sẽ trả về một mảng các giá trị được chọn:

var selectedValues = $('#multipleSelect').val(); 

và trong html của bạn:

<select id="multipleSelect" multiple="multiple"> 
    <option value="1">Text 1</option> 
    <option value="2">Text 2</option> 
    <option value="3">Text 3</option> 
</select> 
+11

gì nếu u muốn để có được 'bản 1' thay vì giá trị? thay thế '.val()' bằng '.text()'? –

+8

Đáng chú ý rằng một lựa chọn nhiều với không có gì được chọn trả về 'null' chứ không phải là một mảng trống. Điều này có nghĩa là nếu bạn đang lập trình _adding_ một giá trị được chọn, bạn có một chút tranh cãi phải làm để làm đúng. – Leo

+0

Cảm ơn bạn! Có rất nhiều cách để có được một giá trị từ một phần tử với jQuery mà chắc chắn là một cuộc đấu tranh để tìm ra cách mà bạn đang tìm kiếm. –

8

Bạn cũng có thể sử dụng chức năng bản đồ js:

$("#multipleSelect :selected").map(function(i, el) { 
    return $(el).val(); 
}); 

Và sau đó bạn có thể nhận được bất kỳ tài sản của các yếu tố option:

return $(el).text(); 
return $(el).data("mydata"); 
return $(el).prop("disabled"); 
etc... 
+2

câu trả lời tuyệt vời, nhưng không cần phải trả thêm chi phí của gói 'el' như một đối tượng jQuery cho mỗi tùy chọn duy nhất. Chỉ cần đi thẳng ra khỏi DOM khi nó không quá lạ. Bạn có thể thay đổi '$ (el) .val()' thành 'el.value'. Tất nhiên nếu bạn đang sử dụng jQuery hoặc muốn lấy dữ liệu hoặc thuộc tính giống như các ví dụ khác của bạn, jQuery không làm tổn thương bất cứ ai. – KyleMit

+1

@KyleMit Mẹo hay. Chỉ cần sử dụng phương pháp này để lấy một tập hợp các giá trị trường ẩn và nó hoạt động hoàn hảo. – EvilDr

4
var selected=[]; 
$('#multipleSelect :selected').each(function(){ 
    selected[$(this).val()]=$(this).text(); 
    }); 
console.log(selected); 

Tuy nhiên, một approch cho vấn đề này. Mảng được chọn sẽ có các chỉ mục làm giá trị tùy chọn và mỗi mục mảng sẽ có văn bản làm giá trị của nó.

ví dụ

<select id="multipleSelect" multiple="multiple"> 
    <option value="abc">Text 1</option> 
    <option value="def">Text 2</option> 
    <option value="ghi">Text 3</option> 
</select> 

nếu nói phương án 1 và 2 được chọn.

mảng chọn sẽ là:

selected['abc']=1; 
selected['def']=2. 
2

Mã Html:

<select id="multiple" multiple="multiple" name="multiple"> 
    <option value=""> -- Select -- </option> 
    <option value="1">Opt1</option> 
    <option value="2">Opt2</option> 
    <option value="3">Opt3</option> 
    <option value="4">Opt4</option> 
    <option value="5">Opt5</option> 
</select> 

JQuery Code:

$('#multiple :selected').each(function(i, sel){ 
    alert($(sel).val()); 

}); 

Hy vọng nó hoạt động

+7

Đừng "hy vọng nó hoạt động", nếu bạn không chắc chắn đó là câu trả lời, hãy kiểm tra nó và chắc chắn! –

+4

Nếu bạn không chắc chắn về câu trả lời, thì đừng đăng nó .. !! chúng tôi không ở đây vì hy vọng .. !! LOL –

+2

Hey Man. Nó hoạt động hoàn hảo. Kiểm tra nó ra. Bạn nên hy vọng nó. Đừng đưa ra nhận xét không liên quan .. – Prabhagaran

0

Get giá trị được chọn trong tách dấu phẩy

var Accessids = ""; 
$(".multi_select .btn-group>ul>li input:checked").each(function(i,obj) 
{ 
    Accessids=Accessids+$(obj).val()+","; 
}); 
Accessids = Accessids.substring(0,Accessids.length - 1); 
console.log(Accessids); 
0

Chỉ cần sử dụng này

$('#multipleSelect').change(function() { 
    var selectedValues = $(this).val(); 
}); 
Các vấn đề liên quan