javascript - Chosen JS - 将optgroup添加到所选项目

标签 javascript jquery jquery-chosen

我想找到在用户选择一个选项时将 optgroup 标签输入到插入的搜索选择项中的方法。格式为[optgroup]-[option]

问题是默认情况下没有明确的方法来做到这一点。 有关如何实现此行为的任何建议?

提前谢谢你。

这是默认行为

enter image description here

这就是我想要做的

Chosen JS

最佳答案

Working fiddle

您可以通过接收 on() 方法的第二个参数来实现这一点,该方法包含一个具有 selected 属性的对象,其中包含一个 value 元素如果它存在或 text 元素(如当前情况):

$(".chosen-select").on('change', function (event,el) {

然后你可以获得最接近的 optgroup 并连接两者然后更新选项 text :

var selected_value  = selected_element.val();
var parent_optgroup = selected_element.closest('optgroup').attr('label');

selected_element.text(parent_optgroup+' - '+selected_value).trigger("chosen:updated");

检查下面的例子,希望这有帮助。


$(".chosen-select").chosen();

$(".chosen-select").on('change', function (event,el) {
  var selected_element = $(".chosen-select option:contains("+el.selected+")");
  
  var selected_value  = selected_element.val();
  var parent_optgroup = selected_element.closest('optgroup').attr('label');
  
  selected_element.text(parent_optgroup+' - '+selected_value).trigger("chosen:updated");
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<link href="http://harvesthq.github.io/chosen/chosen.css" rel="stylesheet"/>
<script src="http://harvesthq.github.io/chosen/chosen.jquery.js"></script>
<select multiple data-placeholder="example" style="width:350px;" class="chosen-select" tabindex="5">
  <option value=""></option>
  <optgroup label="NFC EAST">
    <option>Dallas Cowboys</option>
    <option>New York Giants</option>
    <option>Philadelphia Eagles</option>
    <option>Washington Redskins</option>
  </optgroup>
  <optgroup label="NFC NORTH">
    <option>Chicago Bears</option>
    <option>Detroit Lions</option>
    <option>Green Bay Packers</option>
    <option>Minnesota Vikings</option>
  </optgroup>
  <optgroup label="NFC SOUTH">
    <option>Atlanta Falcons</option>
    <option>Carolina Panthers</option>
    <option>New Orleans Saints</option>
    <option>Tampa Bay Buccaneers</option>
  </optgroup>
  <optgroup label="NFC WEST">
    <option>Arizona Cardinals</option>
    <option>St. Louis Rams</option>
    <option>San Francisco 49ers</option>
    <option>Seattle Seahawks</option>
  </optgroup>
  <optgroup label="AFC EAST">
    <option>Buffalo Bills</option>
    <option>Miami Dolphins</option>
    <option>New England Patriots</option>
    <option>New York Jets</option>
  </optgroup>
  <optgroup label="AFC NORTH">
    <option>Baltimore Ravens</option>
    <option>Cincinnati Bengals</option>
    <option>Cleveland Browns</option>
    <option>Pittsburgh Steelers</option>
  </optgroup>
  <optgroup label="AFC SOUTH">
    <option>Houston Texans</option>
    <option>Indianapolis Colts</option>
    <option>Jacksonville Jaguars</option>
    <option>Tennessee Titans</option>
  </optgroup>
  <optgroup label="AFC WEST">
    <option>Denver Broncos</option>
    <option>Kansas City Chiefs</option>
    <option>Oakland Raiders</option>
    <option>San Diego Chargers</option>
  </optgroup>
</select>

关于javascript - Chosen JS - 将optgroup添加到所选项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35488000/

相关文章:

javascript - 使用显示 :none for media queries and scroll is wrong fullPage. js

javascript - 如果我们已经有了dispatch作为props,为什么还需要mapDispatchToProps呢?

javascript - 如何在 Event.observe(n ,"click",respondClick) 之后执行函数

javascript - RequireJS 不包含必需的对象

jquery - 为什么浏览器看不到这个 CSS 属性

使网页变暗时的 JQuery DIV 弹出窗口

javascript - AngularJS 1.x 选择 MultiSelect 添加新值

javascript - 即使使用 'Access-Control-Allow-Origin' : '*' ?,服务器也会响应 405 错误

javascript - 选择 - 搜索带重音的单词

javascript - Jquery Chosen 在下拉列表中获取未选择值的 Id