【问题标题】:Deselect any option from Bootstrap-Select dropdown component从 Bootstrap-Select 下拉组件中取消选择任何选项
【发布时间】:2017-10-20 20:52:05
【问题描述】:

我有一个 Bootstrap-Select 下拉菜单,在将某个字符串输入文本输入时,该下拉菜单会从另一个来源填充。一切正常,直到默认选择第一个选项,我想阻止这种情况,所以用户必须选择一个选项。

请在此处查看演示:https://jsfiddle.net/moxxah8r/

代码如下:

<style>
  .form-control,
  .selectpicker {
    width: 220px;
  }

  #postalcode {
    text-transform: uppercase;
    margin-right: 10px;
  }
</style>

<div style="padding: 10px;">
  <div style="display: flex;">
    <input name="postalcode" id="postalcode" type="text" class="form-control" autocomplete="postal-code">
    <select name="address" id="address" class="selectpicker" disabled>
      <option value="0" selected>&nbsp;</option>
    </select>
  </div>
</div>

<script>
  var data = ["1 Street Name", "2 Street Name", "3 Street Name", "4 Street Name", "5 Street Name"];
  $('#postalcode').on('input', function(e) {
    var pattern = new RegExp('^[A-Z]{1,2}[0-9]{1,2} ?[0-9][A-Z]{2}$');
    var text = $('#postalcode').val().toUpperCase();

    if (pattern.test(text)) {
      $('#address').empty();
      $.each(data, function(i, value) {
        $('#address').append($('<option>').text(value).attr('value', value));
      });
      $('#address option').prop('selected', false);
      $('#address').prop('disabled', false);
      $('#address').selectpicker('refresh');
    } else {
      $('#address').empty().append('<option value="0" selected>&nbsp;</option>');
      $('#address').prop('disabled', true);
      $('#address').selectpicker('refresh');
    }
  });
</script>

【问题讨论】:

  • 只需添加一个空白选项,就像您在其他任何地方所做的那样

标签: jquery twitter-bootstrap bootstrap-select


【解决方案1】:

您需要做的第一件事是从预定义的&lt;option&gt; 中删除selected,因为这会造成问题,而不是默认设置。

与其依赖空白的&lt;option&gt; hack,为什么不利用 Bootstrap Select 的一些内置功能呢?通过在&lt;select&gt; 元素中指定title,您可以创建一个伪占位符。这可以防止默认选择下拉菜单中的第一项:

&lt;select name="address" id="address" class="selectpicker" title="Make Your Selection" disabled&gt;...&lt;/select&gt;

您可以在 Bootstrap Select 的自定义按钮文本文档中了解此功能以及其他几个标签选项

https://silviomoreto.github.io/bootstrap-select/examples/#placeholder

【讨论】:

  • 完美!定义一个标题就可以了。即使设置 title=" " 也有效,因此在选择某些内容之前不会显示任何文本。谢谢!!
【解决方案2】:

你可以用 jQuery 做到这一点。删除任何空白选项标签并在您的活动中调用它:

$('select#address').val([]);

【讨论】:

  • 我设置了一个小提琴来演示它的工作原理jsfiddle.net/973Lde7j/7
  • @grusl83 非常感谢!这是解决此特定问题的一种非常酷的方法,但它也解决了我的特定问题。尝试使用 Bootstrap4 清除单选按钮,我不得不使用 .val([]);
猜你喜欢
  • 2021-07-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-18
  • 2018-05-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多