【问题标题】:Get the value that was just selected from a jQuery Chosen multiple select element获取刚刚从 jQuery Chosen 多选元素中选择的值
【发布时间】:2016-02-02 23:51:32
【问题描述】:

我正在使用jQuery Chosen 将我的选择转换为多选。当我选择第二个项目时,当我做$(this).val()时,它会给我两个选定的项目。

我只想要我当时选择的项目的值。

以下是我的代码。

$("#languageId").chosen().on("change",function() {
  alert($(this).val());
});

HTML:

<select id="languageId" multiple >
  <option value="Hindi">Hindi</option>
  <option value="English">English</option>
</select>

【问题讨论】:

    标签: javascript jquery jquery-chosen


    【解决方案1】:

    根据the documentation

    无论何时做出选择,Chosen 都会触发标准 DOM 事件(它还会发送一个 selecteddeselected 参数,告诉您哪个选项已更改)。

    因此,您可以访问在change 事件回调中传递的params 对象的selected/deselected 属性。换句话说,params.selected/params.deselected 将是刚刚被选中/取消选中的 option 元素的值。

    Example Here

    $("#languageId").chosen().on("change", function(event, params) {
      var value = $(this).val();
      var changedValue = params.selected || params.deselected;
    
      // ...
    });
    

    解决您在下面的评论,您可以简单地检查 params 对象上的哪个属性,以确定是否选择/取消选择了一个选项:

    $("#languageId").chosen().on("change", function(event, params) {
      if (params.selected) {
        console.log('The option: ' + params.selected + ' was selected.');
      }
      if (params.deselected) {
        console.log('The option: ' + params.deselected + ' was deselected.');
      }
    });
    

    【讨论】:

    • 如何知道该选项是新选择的还是当前选择的选项被取消选择?
    • 从第一个下拉列表中选择语言后,我将相应的值加载到第二个下拉列表中。数据在第二个下拉列表中加载(检查元素告诉我)但我无法查看它。我错过了什么吗?
    • @Parag 如果你更新 this example 演示问题,我会看看。
    • @Parag 当你改变底层的select元素时,你需要触发一个改变事件:$("#castId").trigger('chosen:updated')。这是一个更新的示例:jsfiddle.net/9hd07bq1
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-07-15
    • 1970-01-01
    • 1970-01-01
    • 2014-10-31
    • 1970-01-01
    • 1970-01-01
    • 2021-12-15
    相关资源
    最近更新 更多