<CHỌN nhiều> - làm thế nào để chỉ cho phép một mục được chọn?


134

Tôi có một <SELECT multiple>trường có nhiều tùy chọn và tôi muốn cho phép nó chỉ có một tùy chọn được chọn cùng một lúc nhưng người dùng có thể giữ phím CTRL và chọn nhiều mục cùng một lúc.

Có cách nào để làm điều đó? (Tôi không muốn xóa 'nhiều').


5
Gì? Tại sao? Điều này cần giải thích nhiều hơn.
Đại

5
Bằng cách không sử dụng nhiều với lựa chọn của bạn? :)
GordonM 17/03/2016

5
@GordonM yeah hoàn toàn: PI đã tìm kiếm tương tự ngày hôm nay vì tôi muốn hiển thị nhiều mục (được ngụ ý với multiplethuộc tính) mà không thực sự có thể chọn nhiều mục. Quên rằng thuộc tính để làm điều này đã được gọi size, vì vậy câu trả lời hàng đầu phục vụ tốt cho tôi :)
Luc

Cá nhân tôi có một trường chọn nhiều trong đó tôi có bốn tùy chọn và tôi muốn có ba tùy chọn để có thể được chọn nhưng trường thứ tư cần ở một mình nếu được chọn vì nó sẽ đụng độ với ba tùy chọn khác (3 tùy chọn và "không ")
RWolfe

Câu trả lời:


281

Chỉ cần không chọn nhiều lựa chọn, nhưng đặt kích thước cho nó, chẳng hạn như:

  <select name="user" id="userID" size="3">
    <option>John</option>
    <option>Paul</option>
    <option>Ringo</option>
    <option>George</option>
  </select>

Ví dụ hoạt động: https://jsfiddle.net/q2vo8nge/


Có thể lập trình đếm tổng số <tùy chọn> trong thuộc tính kích thước không?
MyName

@Natasha Bạn có thể nhận được giá trị của trường kích thước bằng cách sử dụng jquery :-)
Vladimir tuyên bố

Thông tin liên quan đến kích thước: Đặt selectbên trong một display: flexthùng chứa và thực hiện flex-grow: 1theo ý selectmuốn sẽ khiến nó được coi size="3"là chiều cao tối thiểu, sau đó chụp chiều cao của toàn bộ vùng chọn thành kích thước tối đa có thể trong thùng chứa của bạn. jsfiddle.net/z1gypahs
Torxed

25

Nếu người dùng chỉ nên chọn một tùy chọn cùng một lúc, chỉ cần xóa "nhiều" - thực hiện chọn bình thường:

  <select name="mySelect" size="3">
     <option>Foo</option>
     <option>Bar</option>
     <option>Foo Bar</option>
     <option>Bar Foo</option>
  </select>

Vĩ cầm


9

Tại sao bạn không muốn xóa multiplethuộc tính? Toàn bộ mục đích của thuộc tính đó là chỉ định cho trình duyệt rằng nhiều giá trị có thể được chọn từ selectphần tử đã cho . Nếu chỉ chọn một giá trị duy nhất, hãy xóa thuộc tính và trình duyệt sẽ biết chỉ cho phép một lựa chọn duy nhất.

Sử dụng các công cụ bạn có, đó là những gì họ đang làm.


1
Ah. thuộc tính kích thước hoạt động độc lập. đã không nhận thấy. cảm ơn
simPod 17/03/2016

6
@simPod lý do là vì có những lúc khách hàng cần xem tất cả các tùy chọn trước mặt họ, nhưng chỉ có thể chọn 1 trong số họ. Đã quá lâu kể từ khi tôi viết html "thực sự", tôi đã phải google / bing câu trả lời ... Ôi trời cảm ơn vì StackOverflow vài ngày.
Richard B

1

Bạn chỉ muốn một tùy chọn theo mặc định, nhưng người dùng có thể chọn nhiều tùy chọn bằng cách nhấn phím CTRL. Đây là (đã) chính xác làm thế nào nhiều CHỌN có nghĩa là hành xử.

Xem điều này: http://www.w3schools.com/tags/tryit.asp?filename=tryhtml_select_multipl

Bạn có thể vui lòng làm rõ câu hỏi của bạn?


Awww Tôi hiểu câu hỏi bây giờ, nhờ Marcos Placona. Câu hỏi ban đầu không được diễn đạt tốt.
Cogicero

Mặc dù cá nhân tôi nghĩ rằng nó "không công bằng" đối với trải nghiệm của người dùng khi bạn hiển thị nhiều tùy chọn chọn nhưng người dùng chỉ có thể chọn một tùy chọn.
Cogicero

1
tùy thuộc vào tình huống
simPod

1

Tôi đến đây sau khi tìm kiếm google và thay đổi điều cuối cùng.

Vì vậy, tôi chỉ thay đổi mẫu này và nó sẽ hoạt động với jquery vào thời gian chạy.

$('select[name*="homepage_select"]').removeAttr('multiple')

http://jsfiddle.net/ajayendra2707/ejkxgy1p/5/


4
Về cơ bản, bạn đang làm những gì câu trả lời được chấp nhận đang làm, nhưng theo một cách phức tạp. Thay vì xóa nhiều thuộc tính trong thời gian chạy, bạn chỉ có thể xóa trực tiếp thuộc tính đó trong HTML. jsfiddle.net/3rkk6m9a
Harry

1
<select name="flowers" size="5" style="height:200px">
 <option value="1">Rose</option>
 <option value="2">Tulip</option>
</select>

Giải pháp đơn giản này cho phép có được một danh sách các tùy chọn trực quan, nhưng chỉ có thể chọn một.


4
Chào mừng đến với SO. Vui lòng thêm mô tả dài dòng
Andriy Ivaneyko

1

Tôi đã có một số giao dịch với select \ multi-select, đây là điều đã giúp tôi

<select name="mySelect" multiple="multiple">
    <option>Foo</option>
    <option>Bar</option>
    <option>Foo Bar</option>
    <option>Bar Foo</option>
</select>

0

Trả lời muộn nhưng có thể giúp người khác, đây là cách thực hiện mà không xóa thuộc tính 'nhiều'.

$('.myDropdown').chosen({
    //Here you can change the value of the maximum allowed options
    max_selected_options: 1
});

Lưu ý: Điều này yêu cầu plugin jQuery Chosen: Harvesthq.github.io/chosen
smolo
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.