每次$_POST
提交后,多选减少,但返回所有ajax响应索引。在这种形式中,我有一个触发 Empresa 更改的事件,它会加载所有其他字段并标记ajax返回的php会话中的选项。
每次提交后,我都会有所有会话项目,但每个字段上的最后一项都被取消选择。
// This code triggers an action in Empresa ...
$(function($) {$('.dropdown-toggle').dropdown('toggle');});
$.ajax({
url: '/ajaxrequests/requestservicos',
type: 'POST', dataType: 'json',
data: {empresas:empresas},
success: function(retorno){
var servs = retorno.servicos; // [10, 12, 14, 20, 21, 23, 25, 29, 32, 33, 38]
var checks = retorno.check; // [10, 12, 14, 20, 21, 23, 25]
console.log(retorno);
$('#ajax_servico').html("");
$.each(servs, function(valor, chave){
$('#ajax_servico').append($('<option>', {
value: valor,
text : chave,
checked: checks[valor],
selected: checks[valor]
}));
});
$("#ajax_servico").multiselect('destroy');
MultiselectSet($("#ajax_servico"));
}
});
function MultiselectSet(input){
$(input).multiselect({
includeSelectAllOption: true,
nSelectedText: 'selecionados ..',
nonSelectedText:'Nenhum selecionado ..',
allSelectedText: 'Todos selecionados ..',
selectAllText: 'Selecionar todos ..',
numberDisplayed: 1,
});
}
答案 0 :(得分:1)
不确定你想在这里做什么,但如果你想要选择支票中的所有物品,你可以试试这个:
$.ajax({
url: '/ajaxrequests/requestservicos',
type: 'POST', dataType: 'json',
data: {empresas:empresas},
})
.then(
function(retorno){
const servs = retorno.servicos, // [10, 12, 14, 20, 21, 23, 25, 29, 32, 33, 38]
checks = retorno.check, // [10, 12, 14, 20, 21, 23, 25]
$servico = $('#ajax_servico');
console.log(retorno);
$servico.html("");
servs.forEach(function(chave,index){
const isInChecks = checks.indexOf(chave)!==-1;
$servico.append($('<option>', {
value: index,
text : chave,
checked: isInChecks,
selected: isInChecks
}));
});
$("#ajax_servico").multiselect('destroy');
MultiselectSet($("#ajax_servico"));
}
,function(reject){console.error("something went wrong:",reject)}
);
我不确定为什么要将选项的值设置为数组的索引,将它设置为数据库中项目的id是不是更好?你将选项的文本设置为一个数字,是id吗?如果是这样,您应该将值设置为id,将文本设置为表示数据库中该id的文本值。