Hello,
I am working with formsets with inputs - select. I figured out that I need remove in second input selected option from the first input and remove in first input selected option from second input. I do not want the situation that user choose the same option in more than one input select.
At first maybe lets consider the condition with updating.
At the beginning I check which options were selected automatic by initial formsets. I create the array/set with numbers of values from input-select.
window.onload
{
var setWykorzystanychOpcji = [ ]
}
>
> function aktualizowanieZbioruSelectowWybranychSymboliParametrow() {
> {#var setWykorzystanychOpcji = new Set()#}
> var liczbaFormsetow = document.getElementById('id_formwymiaut-TOTAL_FORMS').value
>
> for (let i = 0; i < liczbaFormsetow; i++) {
> var inputSelectSymbol1Analizowany = document.getElementById(`id_formwymiaut-${i}-symbolparametru`)
> if (setWykorzystanychOpcji.includes(inputSelectSymbol1Analizowany.value)){
> console.log('jest juz')
> }
> else {
> setWykorzystanychOpcji.push(inputSelectSymbol1Analizowany.value)
> }
> }
> console.log('setWykorzystanychOpcji aktualizowanieZbioruSelectowWybranychSymboliParametrow')
> console.log(setWykorzystanychOpcji)
> {#return setWykorzystanychOpcji;#}
> }
function wczytywanieZbioruSelectowDostepnychSymboli() {
var liczbaFormsetow = document.getElementById('id_formwymiaut-TOTAL_FORMS').value
for (let i = 0; i < liczbaFormsetow; i++) {
var inputSelectSymbol1Analizowany = document.getElementById(`id_formwymiaut-${i}-symbolparametru`)
{#var setWszystkichSymboliParametrowROBOCZY = setWszystkichSymboliParametrow#}
var setWykorzystanychOpcjiROBOcz = []
setWykorzystanychOpcjiROBOcz = setWykorzystanychOpcji
if (setWykorzystanychOpcji.includes(inputSelectSymbol1Analizowany.value)){
setWykorzystanychOpcjiROBOcz.splice(setWykorzystanychOpcjiROBOcz.indexOf(inputSelectSymbol1Analizowany.value),1)
}
setWykorzystanychOpcjiROBOcz.forEach(function (value) {
for (let j = 0; j < inputSelectSymbol1Analizowany.length; j++){
if (inputSelectSymbol1Analizowany.options[j].value === String(value)){
inputSelectSymbol1Analizowany.remove(j);
}
}
})
}
}
I do not understand why does not work correctly deleting the element from setWykorzystanychOpcjiROBOcz which is inside the function. The error is here:
setWykorzystanychOpcjiROBOcz.splice(setWykorzystanychOpcjiROBOcz.indexOf(inputSelectSymbol1Analizowany.value),1)
The problem is that it also remove the element from array/set setWykorzystanychOpcji which comes from outside the function. I would like to copy everytime when for loop starts.
I need explain one more thing, I prepare array/set with selected options and I decide to remove from it the option selected in current input select.
Now I use method .splice(). But when I used delete/remove⦠it was always removed elements from the origin array/set.