Bạn không thể đặt hộp kiểm bên trong phần tử được chọn nhưng bạn có thể có được chức năng tương tự bằng cách sử dụng HTML, CSS và JavaScript. Đây là một giải pháp khả thi. Lời giải thích sau đây.
Mã:
var expanded = false;
function showCheckboxes() {
var checkboxes = document.getElementById("checkboxes");
if (!expanded) {
checkboxes.style.display = "block";
expanded = true;
} else {
checkboxes.style.display = "none";
expanded = false;
}
}
.multiselect {
width: 200px;
}
.selectBox {
position: relative;
}
.selectBox select {
width: 100%;
font-weight: bold;
}
.overSelect {
position: absolute;
left: 0;
right: 0;
top: 0;
bottom: 0;
}
#checkboxes {
display: none;
border: 1px #dadada solid;
}
#checkboxes label {
display: block;
}
#checkboxes label:hover {
background-color: #1e90ff;
}
<form>
<div class="multiselect">
<div class="selectBox" onclick="showCheckboxes()">
<select>
<option>Select an option</option>
</select>
<div class="overSelect"></div>
</div>
<div id="checkboxes">
<label for="one">
<input type="checkbox" id="one" />First checkbox</label>
<label for="two">
<input type="checkbox" id="two" />Second checkbox</label>
<label for="three">
<input type="checkbox" id="three" />Third checkbox</label>
</div>
</div>
</form>
Giải trình:
Lúc đầu, chúng tôi tạo một phần tử chọn hiển thị văn bản "Chọn một tùy chọn" và phần tử trống che (chồng lên) phần tử chọn ( <div class="overSelect">
). Chúng tôi không muốn người dùng nhấp vào phần tử chọn - nó sẽ hiển thị một tùy chọn trống. Để chồng chéo phần tử với phần tử khác, chúng tôi sử dụng thuộc tính CSS position với giá trị tương đối | tuyệt đối.
Để thêm chức năng, chúng tôi chỉ định một hàm JavaScript được gọi khi người dùng nhấp vào div có chứa phần tử select của chúng tôi ( <div class="selectBox" onclick="showCheckboxes()">
).
Chúng tôi cũng tạo div chứa các hộp kiểm của chúng tôi và tạo kiểu cho nó bằng cách sử dụng CSS. Hàm JavaScript được đề cập ở trên chỉ thay đổi <div id="checkboxes">
giá trị của thuộc tính hiển thị CSS từ "none" thành "block" và ngược lại.
Giải pháp đã được thử nghiệm trên các trình duyệt sau: Internet Explorer 10, Firefox 34, Chrome 39. Trình duyệt này cần phải bật JavaScript.
Thêm thông tin:
Định vị CSS
Cách chồng một div lên trên một div khác
http://www.w3schools.com/css/css_positioning.asp
Thuộc tính hiển thị CSS
http://www.w3schools.com/cssref/pr_class_display.asp