使用链接阻止默认选择输入行为

时间:2016-06-16 11:40:14

标签: javascript jquery html twitter-bootstrap

我有一个基于bootstrap和jQuery的选择框,它使用以下插件:http://codeb.it/fonticonpicker/

这是一个图标选择器。选择框的行为类似于输入字段,并显示带有图标的下拉列表。

我要做的是阻止显示选择框,而是使用链接打开下拉列表(显示选择选项)。

$(function() {
  $("#icon_upload_link").on('click', function(e) {
    e.preventDefault();
    $("#myselect:hidden").trigger('focus');
  });
});
#myselect {
  display: none
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<a href="" id="icon_upload_link">Select Icon </a>
<select id="myselect" name="myselect" class="myselect">
  <option value="">No icon</option>
  <option>icon-headphones</option>
  <option>icon-music</option>
  <option>icon-play</option>
  <option>icon-video-camera</option>
  <option>icon-dice</option>
</select>

我似乎无法让它发挥作用。如果我没有链接使用它,它工作正常。任何想法都会很棒。感谢

4 个答案:

答案 0 :(得分:1)

在jquery中使用.show()。它用于显示前端可见id myselect的选择框

$("#myselect").show();

您的代码就像

$(function(){
        $("#icon_upload_link").on('click', function(e){
          e.preventDefault();
          $("#myselect").show();
        })
});

答案 1 :(得分:1)

请看下面的代码。在这里,我试图以编程方式打开图标选择器:

&#13;
&#13;
$(document).ready(function($) {
  $('#myselect').fontIconPicker();

  $("#icon_upload_link").on('click', function(e) {
    e.preventDefault();
    $('#myselect').prev(".icons-selector").find("span.selector-button").trigger('click');
    e.stopImmediatePropagation()

  });

});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>

<script src="http://codeb.it/fonticonpicker/jquery.fonticonpicker.min.js?v=2.0.0"></script>
<link rel="stylesheet" type="text/css" href="http://codeb.it/fonticonpicker/css/jquery.fonticonpicker.min.css?v=2.0.0" />



<link rel="stylesheet" type="text/css" href="http://codeb.it/fonticonpicker/themes/grey-theme/jquery.fonticonpicker.grey.min.css" />

<!-- optional themes -->
<link rel="stylesheet" type="text/css" href="http://codeb.it/fonticonpicker/themes/dark-grey-theme/jquery.fonticonpicker.darkgrey.min.css" />
<link rel="stylesheet" type="text/css" href="http://codeb.it/fonticonpicker/themes/bootstrap-theme/jquery.fonticonpicker.bootstrap.min.css" />
<link rel="stylesheet" type="text/css" href="http://codeb.it/fonticonpicker/themes/inverted-theme/jquery.fonticonpicker.inverted.min.css" />

<link rel="stylesheet" type="text/css" href="http://codeb.it/fonticonpicker/fontello-7275ca86/css/fontello.css" />
<link rel="stylesheet" type="text/css" href="http://codeb.it/fonticonpicker/icomoon/style.css" />


<a href="" id="icon_upload_link">Select Icon </a>
<select id="myselect" name="myselect" class="myselect">
  <option value="">No icon</option>
  <option>icon-headphones</option>
  <option>icon-music</option>
  <option>icon-play</option>
  <option>icon-video-camera</option>
  <option>icon-dice</option>
</select>
&#13;
&#13;
&#13;

答案 2 :(得分:0)

你可以尝试使用css,从display none到block。

$(function(){
    $("#icon_upload_link").on('click', function(e){
       e.preventDefault();
       $("#myselect").css('display','block');
});
});

答案 3 :(得分:0)

我认为,你应该重构选择另一个bootstrap下拉列表。据我所知,只有在Chrome中使用此代码才能打开选择:

event = document.createEvent('MouseEvents');
event.initMouseEvent('mousedown', true, true, window);
document.getElementById('myselect').dispatchEvent(event);

如何避免使用选择

有很多选择