2012-07-26 67 views
17

如何确定组件上触发的更改事件是选择还是取消选择的结果? 我们只能如何获取选定值的值或仅取消选定值?.chosen.change() - 如何确定它是选择还是取消选择

$("#airports-select-2").chosen().change(function(event) { 
    console.log('select2 change', event, $(event.target).val()); 
}); 

此代码给出了迄今为止在多选组件上选择的所有值?这怎么能改变,只给我新的选择或取消选定的组件的价值?

+1

如果选择的插件不能给你在回调的信息,你可能不得不每次都保存选定项的列表数组,然后比较和更新数组中的'变化'回调被称为 – MrOBrian 2012-07-26 21:10:57

回答

3

在每一个事件火可以触发:

var target = $(event.target), 
    priorDataSet = target.data("chosen-values"), 
    currentDataSet = target.val(); 

//Diff and compare the delta here.  

target.data("chosen-values", currentDataSet); 

之前,你可以diff来确定增量是什么值集之间的DOM元素中数据的更新。如果它在旧的而不是在新的它被删除。如果它是新的而不是旧的,那么它已被添加。

如果您需要一个如何确定两个阵列之间的增量的示例,请告诉我,我也会为此做一个示例。

36

选自documentation

选上的触发每当做出选择 标准DOM事件(也发送选择取消参数,告诉你哪些 选择是改变)。

$('select').on('change', function(event, params) { 
    // can now use params.selected and params.deselected 
    }); 
+0

你碰巧知道如何取消更改事件吗?假设用户选择和选项和更改事件被触发,但基于某些条件我想恢复此选择。 – Shaunak 2013-09-04 21:20:27

+0

您可以将