jquery select2 multiselect: 如何检查选项是否被选中?
jquery select2 multiselect: How can I check if options is selected or not?
我需要捕捉这两个事件:
- 第一个选项是 selected
- 所有选项都已删除selected
原因是 - 当第一个选项是 selected 或所有先前的 select 时,我想禁用另一个下拉菜单(负责我的 multiselect 的内容) ed 已删除selected.
更新:
$('.projectSelector').on('change', function() {
var targetProject_id = $('#project-id :selected').val();
updateParticpantDropdown(targetProject_id);
});
function updateParticpantDropdown(selectedProjectId){
$.ajax({
type: "POST",
url: '/xx/projects/xx/'+ selectedProjectId,
dataType : "json",
success: function (response, status) {
if(status === "success") {
//console.log('success post');
if(response.result == "error") {
alert(response.message);
}else if (response.result == "success"){
var data = response.data;
$(".participantSelector").empty().select2({
placeholder: "Click here to select participants for above selected project",
allowClear: false,
data: data
});
}
} else if(status === "error") {
// Ajax Post call failed
console.log('fatal ajax post call failed');
}
}
});
}
这是我的 ajax 部分。当我 select 从下拉列表 '.projectSelector' 更新我的 multiselect '.participantSelector'.
到目前为止工作正常!
我不想要的是捕获“.participantSelector”中的第一个 selection 以禁用“.projectSelector”。反之,如果在“.participantSelector”中没有 selected,则设置“.projectSelector”为活动状态。
我的 html 看起来像这样:
<select name="participant_id[]" multiple="multiple" class="form-control select2me participantSelector" required="required" id="participant-id"><option value=""></option></select>
从文档我试过这个:
$('select').on('select2:select', function (evt) {
// Do something
});
但这确实会在下拉列表中触发 selection - 但不会触发我的 multiselect.selection 中的 selection。
顺便说一句,我在我的 multiselect 中使用 selection 显示此错误:
TypeError: b.dataAdapter is null
您可以使用 first()
方法获取列表中的第一项。参见 documentation, and you can get selected options with :selected
selector. See documentation。
试试这样的东西:
$('#select').on('change', function() {
var first = $(this).find('option').first().val();
var none = $(this).find('option:selected').length;
if ($(this).val() == first) {
alert('First item selected!');
} else if (none == 0) {
alert('All items deselected!');
}
});
我需要捕捉这两个事件:
- 第一个选项是 selected
- 所有选项都已删除selected
原因是 - 当第一个选项是 selected 或所有先前的 select 时,我想禁用另一个下拉菜单(负责我的 multiselect 的内容) ed 已删除selected.
更新:
$('.projectSelector').on('change', function() {
var targetProject_id = $('#project-id :selected').val();
updateParticpantDropdown(targetProject_id);
});
function updateParticpantDropdown(selectedProjectId){
$.ajax({
type: "POST",
url: '/xx/projects/xx/'+ selectedProjectId,
dataType : "json",
success: function (response, status) {
if(status === "success") {
//console.log('success post');
if(response.result == "error") {
alert(response.message);
}else if (response.result == "success"){
var data = response.data;
$(".participantSelector").empty().select2({
placeholder: "Click here to select participants for above selected project",
allowClear: false,
data: data
});
}
} else if(status === "error") {
// Ajax Post call failed
console.log('fatal ajax post call failed');
}
}
});
}
这是我的 ajax 部分。当我 select 从下拉列表 '.projectSelector' 更新我的 multiselect '.participantSelector'.
到目前为止工作正常!
我不想要的是捕获“.participantSelector”中的第一个 selection 以禁用“.projectSelector”。反之,如果在“.participantSelector”中没有 selected,则设置“.projectSelector”为活动状态。
我的 html 看起来像这样:
<select name="participant_id[]" multiple="multiple" class="form-control select2me participantSelector" required="required" id="participant-id"><option value=""></option></select>
从文档我试过这个:
$('select').on('select2:select', function (evt) {
// Do something
});
但这确实会在下拉列表中触发 selection - 但不会触发我的 multiselect.selection 中的 selection。
顺便说一句,我在我的 multiselect 中使用 selection 显示此错误:
TypeError: b.dataAdapter is null
您可以使用 first()
方法获取列表中的第一项。参见 documentation, and you can get selected options with :selected
selector. See documentation。
试试这样的东西:
$('#select').on('change', function() {
var first = $(this).find('option').first().val();
var none = $(this).find('option:selected').length;
if ($(this).val() == first) {
alert('First item selected!');
} else if (none == 0) {
alert('All items deselected!');
}
});