Vous ne pouvez pas placer une case à cocher dans un élément de sélection, mais vous pouvez obtenir la même fonctionnalité en utilisant HTML, CSS et JavaScript. Voici une solution possible. L'explication suit.
Code :
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>
Explication :
Nous créons d'abord un élément de sélection qui affiche le texte "Sélectionnez une option", puis un élément vide qui recouvre l'élément de sélection ( <div class="overSelect">
). Nous ne voulons pas que l'utilisateur clique sur l'élément de sélection - il afficherait une option vide. Pour superposer l'élément avec d'autres éléments, nous utilisons la propriété CSS position avec la valeur relative | absolue.
Pour ajouter la fonctionnalité, nous spécifions une fonction JavaScript qui est appelée lorsque l'utilisateur clique sur le div qui contient notre élément de sélection ( <div class="selectBox" onclick="showCheckboxes()">
).
Nous créons également la div qui contient nos cases à cocher et la stylisons à l'aide de CSS. La fonction JavaScript mentionnée ci-dessus change simplement <div id="checkboxes">
la valeur de la propriété CSS display de "none" à "block" et vice versa.
La solution a été testée dans les navigateurs suivants : Internet Explorer 10, Firefox 34, Chrome 39. JavaScript doit être activé dans le navigateur.
Plus d'informations :
Positionnement CSS
Comment superposer une div sur une autre div
http://www.w3schools.com/css/css_positioning.asp
Propriété d'affichage CSS
http://www.w3schools.com/cssref/pr_class_display.asp