【问题标题】:how to set a select option value using jquery and select search lib?如何使用 jquery 设置选择选项值并选择搜索库?
【发布时间】:2018-10-27 03:36:42
【问题描述】:

如何使用 jquery 从下拉列表中选择选项值? 我正在使用带有引导插件和选择搜索插件的选择选项列表,但选择不是激活的 . . .

  $().ready(function(){
      // To style only selects with the selectpicker class
      $('select').selectpicker();
      $('#numbers').val(3);
  });
<!-- Latest compiled and minified CSS -->
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css">

<!-- jQuery library -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<!-- Popper JS -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.3/umd/popper.min.js"></script>

<!-- Latest compiled JavaScript -->
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.1.3/js/bootstrap.min.js"></script>

<!--***************select search plugin********-->
<!-- Latest compiled and minified CSS -->
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-select/1.13.2/css/bootstrap-select.min.css">

<!-- Latest compiled and minified JavaScript -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-select/1.13.2/js/bootstrap-select.min.js"></script>

<!-- (Optional) Latest compiled and minified JavaScript translation files -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-select/1.13.2/js/i18n/defaults-*.min.js"></script>
<select name="numbers" id="numbers">
<option>Why Not appears?</option>
	<option value="1">one</option>
	<option value="2">two</option>
	<option value="3">three</option>
	<option value="4">four</option>
</select>

我愿意

【问题讨论】:

标签: javascript jquery dropdown


【解决方案1】:

您的代码运行良好,但在初始化选择器时您将其覆盖。相反,设置值,然后初始化选择器或使用选择器 API 这样做:

  $(document).ready(function(){
      $('select').selectpicker();
      $('#numbers').selectpicker('val', 3);
  });

  $(document).ready(function(){
      $('select').selectpicker();
      $('#numbers').selectpicker('val', 3);
  });
<!-- Latest compiled and minified CSS -->
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css">

<!-- jQuery library -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<!-- Popper JS -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.3/umd/popper.min.js"></script>

<!-- Latest compiled JavaScript -->
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.1.3/js/bootstrap.min.js"></script>

<!--***************select search plugin********-->
<!-- Latest compiled and minified CSS -->
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-select/1.13.2/css/bootstrap-select.min.css">

<!-- Latest compiled and minified JavaScript -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-select/1.13.2/js/bootstrap-select.min.js"></script>

<!-- (Optional) Latest compiled and minified JavaScript translation files -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-select/1.13.2/js/i18n/defaults-*.min.js"></script>
<select name="numbers" id="numbers">
<option>Why Not appears?</option>
	<option value="1">one</option>
	<option value="2">two</option>
	<option value="3">three</option>
	<option value="4">four</option>
</select>

发生这种情况是因为该组件的接口在您将其初始化为选择器后会发生变化。如果你想使用selectpicker API,你需要使用.selectpicker('val', 3);

Read More

【讨论】:

  • 这在页面加载时效果很好。但是,如果您想在初始化后更改值,则需要调用刷新函数
  • 是的,我更新了我的答案并展示了如何更新帖子加载。
  • 您在选择元素上调用 Val。这将改变所有选择。你需要在#numbers上调用它
  • 可能是真的,但是 OP 是这样初始化的,所以我该假设谁?
  • OP 在所有选择上调用 selectpicker 的 init,然后尝试更改 #numbers 的值。
【解决方案2】:

如果要在创建 selectpicker 后更改值,则必须刷新 selectpicker。

$('#numbers').selectpicker('val', 3);

但是在页面加载时,你只需要改变你的 jquery 的顺序。

$('#numbers').val(3);
$('select').selectpicker();

如果你想改变不同选择的多个值,你可以

  1. 多次调用 selectpicker API ($('#numbers').selectpicker('val', 3);)

  2. 使用纯 jquery 更改所有值,然后刷新选择器

    $('#first').val(3);
    $('#second').val(4); $('select').selectpicker('refresh');

这里是来源https://stackoverflow.com/a/14804479

【讨论】:

  • 没有理由使用刷新。该方法仅用于添加/删除/禁用选项。如我的回答所述,OP 应使用val
  • 你没有,应该是.selectpicker('val', 3);
  • 我做到了。在页面加载时没有理由调用它。
  • refresh 对我来说效果很好,因为我的应用程序中有多个下拉菜单存在相同的问题并使用 $('select').selectpicker('refresh'); //解决了所有问题。 . .谢谢大家
  • 每次更改值时都可以调用$('SELECTOR').selectpicker('val', VALUE);。这比刷新更干净,因为 2 行 > 1 行
【解决方案3】:

您的代码中没有 selectpicker() 函数,因此 jquery 不会进一步执行。我已经评论了它并且它工作正常。

$().ready(function(){
      // To style only selects with the selectpicker class
      //$('select').selectpicker();
      $('#numbers').val(3);
  });
<!-- Latest compiled and minified CSS -->
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css">

<!-- jQuery library -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<!-- Popper JS -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.3/umd/popper.min.js"></script>

<!-- Latest compiled JavaScript -->
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.1.3/js/bootstrap.min.js"></script>

<!--***************select search plugin********-->
<!-- Latest compiled and minified CSS -->
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-select/1.13.2/css/bootstrap-select.min.css">

<!-- Latest compiled and minified JavaScript -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-select/1.13.2/js/bootstrap-select.min.js"></script>

<!-- (Optional) Latest compiled and minified JavaScript translation files -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-select/1.13.2/js/i18n/defaults-*.min.js"></script>
<select name="numbers" id="numbers">
<option>Why Not appears?</option>
	<option value="1">one</option>
	<option value="2">two</option>
	<option value="3">three</option>
	<option value="4">four</option>
</select>

【讨论】:

  • 他想保留选择器。为什么要删除它?
  • 我没有删除它,我评论它只是为了告诉他在他的代码中不存在 selectpicker() 函数,因此它阻止了下一行脚本的执行。
  • 这是不正确的。他的代码确实来自 bootstrap-select lib。
猜你喜欢
  • 2011-01-14
  • 1970-01-01
  • 2011-10-27
  • 2012-07-07
  • 2011-04-03
  • 1970-01-01
  • 2012-10-31
  • 2014-11-18
  • 2018-12-29
相关资源
最近更新 更多