多个 select - deselect returns 的值 null
Multiple select - value of deselect returns null
描述
我正在使用一个 jquery 插件 chosen,它几乎可以做这样的事情:
这让我可以一一添加每个选项或一一删除每个选项。对于每个选定的选项,我创建一个新的 element,并将选定选项的 value 作为 id。
问题
问题出在我从列表中删除一个选项时。例如:
$('#multiple-select').on('change', function(e){
alert($(e.target).val());
});
如果添加了选项,return 是否会得到正确的 值 ,但是 returns null 如果我们删除一个选项。我需要能够获得被取消选择的选项的值,以便我可以在另一个 元素 .
中删除它
问题
如何将取消选择的选项的值设为 return 实际值而不是空值?还是有另一种方法可以绕过这个问题?
我需要做的就是找到取消选择的选项并将其从其他元素中删除(知道元素的 id 是基于选项的值构建的)。
更新
按要求删除代码:
$('body').on('change', benefs, function(e){
var $nbparts = $(participantNbParts),
$target = $(e.target),
$val = $target.val(),
$name = $target.text();
if($val == null){
//this is because we deleted something thus we need to remove it from $nbparts which is a pitty since we don't know what it was before it got deleted
}else{
//someone was added
$(create_row_expense_nb_parts_participant($name, $val)).appendTo($nbparts).show('slow');
$nbparts.parent().show('fast');
}
});
根据 change
事件描述中的 documentation,您有
Chosen triggers the standard DOM event whenever a selection is made
(it also sends a selected or deselected parameter that tells you which
option was changed).
这表明您应该观察事件处理程序在 运行 时接收到的参数,以获得关于 removed/deselected 选项的提示(并且很可能是参考)。
jQuery chosen 提供了 selected
和 deselected
,您可以使用它们分别识别选中和取消选中的值,例如:
$("#your_element_id").on('change', function (evt, params) {
var selected = params.selected;
var removed = params.deselected; //gives you the deselected value
//assuming your option ids are numbers
if( removed > 0 ) {
console.log( "Value removed is:" + removed );
}
});
描述
我正在使用一个 jquery 插件 chosen,它几乎可以做这样的事情:
这让我可以一一添加每个选项或一一删除每个选项。对于每个选定的选项,我创建一个新的 element,并将选定选项的 value 作为 id。
问题
问题出在我从列表中删除一个选项时。例如:
$('#multiple-select').on('change', function(e){
alert($(e.target).val());
});
如果添加了选项,return 是否会得到正确的 值 ,但是 returns null 如果我们删除一个选项。我需要能够获得被取消选择的选项的值,以便我可以在另一个 元素 .
中删除它问题
如何将取消选择的选项的值设为 return 实际值而不是空值?还是有另一种方法可以绕过这个问题?
我需要做的就是找到取消选择的选项并将其从其他元素中删除(知道元素的 id 是基于选项的值构建的)。
更新
按要求删除代码:
$('body').on('change', benefs, function(e){
var $nbparts = $(participantNbParts),
$target = $(e.target),
$val = $target.val(),
$name = $target.text();
if($val == null){
//this is because we deleted something thus we need to remove it from $nbparts which is a pitty since we don't know what it was before it got deleted
}else{
//someone was added
$(create_row_expense_nb_parts_participant($name, $val)).appendTo($nbparts).show('slow');
$nbparts.parent().show('fast');
}
});
根据 change
事件描述中的 documentation,您有
Chosen triggers the standard DOM event whenever a selection is made (it also sends a selected or deselected parameter that tells you which option was changed).
这表明您应该观察事件处理程序在 运行 时接收到的参数,以获得关于 removed/deselected 选项的提示(并且很可能是参考)。
jQuery chosen 提供了 selected
和 deselected
,您可以使用它们分别识别选中和取消选中的值,例如:
$("#your_element_id").on('change', function (evt, params) {
var selected = params.selected;
var removed = params.deselected; //gives you the deselected value
//assuming your option ids are numbers
if( removed > 0 ) {
console.log( "Value removed is:" + removed );
}
});