Mar*_*ina 5 javascript jquery multiple-select
我正在使用这个多复选框插件 http://multiple-select.wenzhixin.net.cn/docs/en/download
我正在使用过滤选项
当我点击 BERMUDA 选项时,即使我没有点击全选,调试也会引发 onClick 事件和 onCheckAll 事件。
只有当除了“全选”条目之外我只有一个条目时,才会发生这种情况。
js代码如下:
$("#" +ddl_ID).multipleSelect({
filter: true,
multiple: true,
"data-multiple-width": 150,
onClick: function (view) {
//aggiungo alla lista di selezionati solo il valore selezionato.
//se esiste già lo elimino
listaSel = $("#"+txtSel_ID).val();
var array = listaSel.replace("[", "").replace("]", "").split(",");
const index = array.indexOf(view.value);
if (index >= 0) //esiste già, lo elimino
array.splice(index, 1);
else //non esiste, lo aggiungo
array.push(view.value);
listaSel = "";
//ricostruisco la stringa
for (var i = 0; i < array.length; i++) {
if (array[i] != "")
listaSel += array[i] + ",";
}
if (listaSel.length > 0)
listaSel = listaSel.substring(0, listaSel.length - 1);
$("#" +txtSel_ID).val("[" + listaSel + "]");
console.log($("#" +txtSel_ID).val());
},
onCheckAll: function (view) {
listaSel = $("#" +txtSel_ID).val(); //attualmente nella ricerca
var listaSelezionata = $("#" +ddl_ID).multipleSelect("getSelects"); //selezionati adesso
var array = listaSel.replace("[", "").replace("]", "").split(",");
for (var i = 0; i < listaSelezionata.length; i++) {
const index = array.indexOf(listaSelezionata[i]);
if (index == -1) //non esiste, lo aggiungo
array.push(listaSelezionata[i]);
}
listaSel = "";
//ricostruisco la stringa
for (var i = 0; i < array.length; i++) {
if (array[i] != "")
listaSel += array[i] + ",";
}
if (listaSel.length > 0)
listaSel = listaSel.substring(0, listaSel.length - 1);
$("#" +txtSel_ID).val("[" + listaSel + "]");
console.log($("#" +txtSel_ID).val());
},
onUncheckAll: function (view) {
listaSel = $("#" +txtSel_ID).val(); //attualmente nella ricerca
var listaSelezionata = $("#" +ddl_ID).find('option').not(':selected'); //selezionati adesso
var array = listaSel.replace("[", "").replace("]", "").split(",");
for (var i = 0; i < listaSelezionata.length; i++) {
const index = array.indexOf(listaSelezionata[i].value);
if (index > -1) // esiste, lo rimuovo
array.splice(index, 1);
}
listaSel = "";
//ricostruisco la stringa
for (var i = 0; i < array.length; i++) {
if (array[i] != "")
listaSel += array[i] + ",";
}
if (listaSel.length > 0)
listaSel = listaSel.substring(0, listaSel.length - 1);
$("#" +txtSel_ID).val("[" + listaSel + "]");
console.log($("#" +txtSel_ID).val());
}
});
//se la listaSel è vuota richiamo per sicurezza l'uncheckall
if (listaSel == undefined || listaSel == "" || listaSel == "[]") {
console.log("lista null");
$("#" +ddl_ID).multipleSelect("uncheckAll");
}
//se no imposto i valori selezionati
else {
$("#" +ddl_ID).multipleSelect("setSelects", JSON.parse(listaSel));
}
}
Run Code Online (Sandbox Code Playgroud)
有人能帮我吗?
Ciao Martina,tuto bene?
我不得不承认我不知道您正在使用的插件,但阅读您的问题似乎它是按预期工作或插件本身的副作用。
为了确保这一点,您可以尝试查看当onUncheckAll您取消选中 BERMUDA 时是否会触发事件和/或使用具有两个结果的搜索重复相同的测试,并检查选择/取消选择所有结果时会发生什么。
如果是这种情况,我只是建议您在编写句柄时牢记插件的这种行为。
希望这可以帮助。