如何"下拉"点击其他地方的选择?

时间:2016-06-09 21:06:36

标签: javascript jquery drop-down-menu

这就是我拥有的东西:

正常选择,有几个选项......

问题是,我确实需要点击其他div,当我点击那个时,我希望选择列表在正常点击时显示,然后允许用户从选择选项中进行选择< / p>

我已经有了一些代码

<div onclick="set_select()"></div>

<select class='form-control' id='opts'>
<option selected disabled></option>
<option>Contacto</option>
<option>Entrevista</option>
<option>Prensa</option>
<option>Conferencias</option>
</select>

<script type="text/javascript">
function set_select(){
    var select = document.getElementById('opts');
    return select.active = true;
}   
</script>

3 个答案:

答案 0 :(得分:0)

使用普通的html / javascript无法实现。

答案 1 :(得分:0)

你需要一些插件用div替换你的标准选择字段,然后用你的函数来触发那个div。一个是选择菜单:https://jqueryui.com/selectmenu/#product-selection 其中有更多可用:https://www.google.pl/search?q=js+select+replacement&gws_rd=cr&ei=wN5ZV8SjMIGLsgGP_IboDQ

答案 2 :(得分:0)

这是“排序”的可能但不是微不足道的,你需要对这个效果进行一些管理,就像我在这里选择的“更改”事件一样。不完美但也许这可以给你一个开始。

注意你可能只想在选择上使用“焦点”,或者像我这样设置可见大小,使用event.target.size = 0;将更改的选择大小设置为0,等等。

稍微修改了标记以允许点击处理程序:

<div id="clicker">clicker</div>

<select class='form-control' id='opts'>
  <option selected disabled></option>
  <option>Contacto</option>
  <option>Entrevista</option>
  <option>Prensa</option>
  <option>Conferencias</option>
</select>

正如我所说,这里的脚本并不完美,但您可以决定如何处理更改/点击事件。

window.onload = function() {
  var id = "clicker";
  var div = document.getElementById(id);
  var select = document.getElementById("opts");

  div.onclick = function(event) {
    console.log('clicker div');
    select.size = select.options.length;
    select.focus();
  };
  select.onclick = function(event) {
    console.log('opt clicked');
  };
  select.onchange = function(event) {
    console.log('opt change');
    var index = event.target.selectedIndex;
    console.log(index);
    event.target.size = index + 2;
  };
}

这是一个可以帮助您入门的小提琴:https://jsfiddle.net/MarkSchultheiss/mL0b7ubr/

请注意,如果您希望使用选择的“默认”大小,您可以检测到这样:

 if (event.target.type == "select-one") {
   event.target.size = 1;
 } else {
   event.target.size = 4;
 }

这是对事件附件进行更改和更清洁的小提琴:https://jsfiddle.net/MarkSchultheiss/mL0b7ubr/1/