Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/89.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 舔外面 }); $('.multiple_select option').mousedown(函数(e){//no ctrl选择多个 e、 预防默认值(); $(this.prop('selected'),$(this.prop('selected')?false:true);//单击设置所选选项 $(this).parent().change();//触发更改事件 }); $(“#myFilter”)。在('change',function()上{ var selected=$(“#myFilter”).val().toString();//这里我获取所有选项并转换为字符串 var document_style=document.documentElement.style; 如果(选中!==“”) document_style.setProperty('--text',“'Selected:“+Selected+”); 其他的 document_style.setProperty('--text',“'Select values'”); }); :根目录 { --文本:“选择值”; } .多重选择 { 高度:18px; 宽度:90%; 溢出:隐藏; -webkit外观:menulist; 位置:相对位置; } .multiple_select::before { 内容:var(--文本); 显示:块; 左边距:5px; 边缘底部:2px; } .多个\u选择\u活动 { 溢出:可见!重要; } .多重选择选项 { 显示:无; 高度:18px; 背景色:白色; } .多个选择活动选项 { 显示:块; } .multiple_select option::before{ 内容:“\2610”; } .multiple_select选项:选中::before{ 内容:“\2611”; } A. B C D E_Javascript_Html_Css_Html Select - Fatal编程技术网

Javascript 舔外面 }); $('.multiple_select option').mousedown(函数(e){//no ctrl选择多个 e、 预防默认值(); $(this.prop('selected'),$(this.prop('selected')?false:true);//单击设置所选选项 $(this).parent().change();//触发更改事件 }); $(“#myFilter”)。在('change',function()上{ var selected=$(“#myFilter”).val().toString();//这里我获取所有选项并转换为字符串 var document_style=document.documentElement.style; 如果(选中!==“”) document_style.setProperty('--text',“'Selected:“+Selected+”); 其他的 document_style.setProperty('--text',“'Select values'”); }); :根目录 { --文本:“选择值”; } .多重选择 { 高度:18px; 宽度:90%; 溢出:隐藏; -webkit外观:menulist; 位置:相对位置; } .multiple_select::before { 内容:var(--文本); 显示:块; 左边距:5px; 边缘底部:2px; } .多个\u选择\u活动 { 溢出:可见!重要; } .多重选择选项 { 显示:无; 高度:18px; 背景色:白色; } .多个选择活动选项 { 显示:块; } .multiple_select option::before{ 内容:“\2610”; } .multiple_select选项:选中::before{ 内容:“\2611”; } A. B C D E

Javascript 舔外面 }); $('.multiple_select option').mousedown(函数(e){//no ctrl选择多个 e、 预防默认值(); $(this.prop('selected'),$(this.prop('selected')?false:true);//单击设置所选选项 $(this).parent().change();//触发更改事件 }); $(“#myFilter”)。在('change',function()上{ var selected=$(“#myFilter”).val().toString();//这里我获取所有选项并转换为字符串 var document_style=document.documentElement.style; 如果(选中!==“”) document_style.setProperty('--text',“'Selected:“+Selected+”); 其他的 document_style.setProperty('--text',“'Select values'”); }); :根目录 { --文本:“选择值”; } .多重选择 { 高度:18px; 宽度:90%; 溢出:隐藏; -webkit外观:menulist; 位置:相对位置; } .multiple_select::before { 内容:var(--文本); 显示:块; 左边距:5px; 边缘底部:2px; } .多个\u选择\u活动 { 溢出:可见!重要; } .多重选择选项 { 显示:无; 高度:18px; 背景色:白色; } .多个选择活动选项 { 显示:块; } .multiple_select option::before{ 内容:“\2610”; } .multiple_select选项:选中::before{ 内容:“\2611”; } A. B C D E,javascript,html,css,html-select,Javascript,Html,Css,Html Select,使用“单击外部”隐藏复选框的替代Vanilla JS版本: let expanded = false; const multiSelect = document.querySelector('.multiselect'); multiSelect.addEventListener('click', function(e) { const checkboxes = document.getElementById("checkboxes"); if (!expanded) {

使用“单击外部”隐藏复选框的替代Vanilla JS版本:

let expanded = false;
const multiSelect = document.querySelector('.multiselect');

multiSelect.addEventListener('click', function(e) {
  const checkboxes = document.getElementById("checkboxes");
    if (!expanded) {
    checkboxes.style.display = "block";
    expanded = true;
  } else {
    checkboxes.style.display = "none";
    expanded = false;
  }
  e.stopPropagation();
}, true)

document.addEventListener('click', function(e){
  if (expanded) {
    checkboxes.style.display = "none";
    expanded = false;
  }
}, false)
我使用addEventListener而不是onClick,以利用捕获/冒泡阶段选项以及StopperPogation()。 您可以在此处阅读有关捕获/冒泡的更多信息:

代码的其余部分与vitfo的原始答案匹配(但不需要html中的onclick()。 一些人已经在sansjquery上请求了这个功能


下面是代码笔示例

仅添加类creatediv和添加类表单控件。我使用JSP,boostrap4。忽略c:foreach

<div class="multi-select form-control" style="height:107.292px;">
        <div class="checkbox" id="checkbox-expedientes">
            <c:forEach var="item" items="${postulantes}">
                <label class="form-check-label">
                    <input id="options" class="postulantes" type="checkbox" value="1">Option 1</label>
            </c:forEach>
        </div>
    </div>

选择1

如果要在同一页面中创建多个选择下拉列表:

.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;
}
Html:



你可以试试。它也有一个现场搜索

“如果可能的话,我只需要HTML CSS代码”。。。是的,有可能。。。你只需要自己或谷歌来编码it@fmodos可能的请给我们一个演示,看看吧。。。仅使用CSS和HTML是不可能的请阅读此帖子@Mr.Alien I miss underspected。。。我以为他要求的组件“可以”是HTML CSS,而不是“必须”只是“HTML CSS”。。。my bad://Mr.Alien,该链接给出了一个403。仅供参考:如果需要修改多个选择列表,则此解决方案将需要更多的努力。我建议使用一些积极维护的插件。另外,当用户选择任何选项时,选择框不会消失。这个答案很好,对我很有用。不过,我在这方面做了一个改进。我使用了
选择一个选项
,而不是可能在复杂界面中导致某些问题的
过选
div。这可能不是
隐藏的最佳用途,但它很有效。我们可以显示所选项目吗?但是当我们单击外部时,如何隐藏下拉列表?您不需要将这些库用于您的解决方案。您可以只使用常规的HTML多选择选项。谢谢我知道我可以使用HTML多选选项,但我发现它很难看,不友好。我喜欢这个插件的行为,但想在没有引导的情况下使用它。。。有什么相似的吗?这个插件有很多问题。。。他们有150个未解决的问题,维护人员说他没有时间。因此,在一些问题之后,我转向了公认的答案vue@Erbureth演示中的外部脚本/样式表路径已过时(死链接)。我更新了URL来修复它。当
multiple
属性使
看起来像一个框而不是一个下拉列表时,这是一个问题…@vsync,你能详细说明一下你遇到了什么问题吗,甚至可以用叉子拨弄一下屏幕截图。这里的目标是应用于
元素,因此这应该是预期的用例。CSS选择器应该特定于应用该类,因此您可以通过应用
来决定在单个元素上使用。如果您正在寻找纯CSS方法,请选中复选框
类强烈推荐此优雅的解决方案。@KyleMit很好的解决方案!!!但问题是,如果我想选择多个项目,那么我必须像使用简单的选择元素一样使用Ctrl按钮。@LalitRajput,当然,所有浏览器中的所有多个选择控件的默认交互设计。我同意这有点不可靠或不直观。如果您想要,您可以随时找到覆盖默认行为的方法-有关构建每行包含复选框元素的
下拉菜单的基本方法的完整示例,请参见此链接,这里有一个答案,而此链接可能会回答此问题,最好在这里包括答案的基本部分,并提供链接供参考。如果链接页面发生更改,则仅链接的答案可能无效-
    var js_arr = $.parseJSON(/*data from ajax*/);
    $("#selectBoxId").val(js_arr);
    $("#selectBoxId").multiselect("refresh");
let expanded = false;
const multiSelect = document.querySelector('.multiselect');

multiSelect.addEventListener('click', function(e) {
  const checkboxes = document.getElementById("checkboxes");
    if (!expanded) {
    checkboxes.style.display = "block";
    expanded = true;
  } else {
    checkboxes.style.display = "none";
    expanded = false;
  }
  e.stopPropagation();
}, true)

document.addEventListener('click', function(e){
  if (expanded) {
    checkboxes.style.display = "none";
    expanded = false;
  }
}, false)
<div class="multi-select form-control" style="height:107.292px;">
        <div class="checkbox" id="checkbox-expedientes">
            <c:forEach var="item" items="${postulantes}">
                <label class="form-check-label">
                    <input id="options" class="postulantes" type="checkbox" value="1">Option 1</label>
            </c:forEach>
        </div>
    </div>
.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>
<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>
 function showCheckboxes(elethis) {
        if($(elethis).next('#checkboxes').is(':hidden')){
            $(elethis).next('#checkboxes').show();
            $('.selectBox').not(elethis).next('#checkboxes').hide();  
        }else{
            $(elethis).next('#checkboxes').hide();
            $('.selectBox').not(elethis).next('#checkboxes').hide();
        }
 }