Ändra från dropdown till checkbox samt if:ar?

PHPportalen Forum Index » HTML/CSS/JavaScript/Design
Lägg ett bokmärke på hela tråden
Skapa nytt inlägg   Svara på inlägget
Visa föregående ämne :: Visa nästa ämne  
Startad av: Meddelande
marcusgarden



Medlem i: 3254 dagar

Status: Offline



#742452
Inlägg Skrivet: 2019-01-25 00:26      Ämne: Ändra från dropdown till checkbox samt if:ar? Citera

Hej!

Jag har idag ett script som bygger en dropdown

KOD:
1:
var drpdwn = document.getElementById('class_id');
2:
                        drpdwn.innerHTML = ''; //töm dropdown
3:
                        
4:
                        for(var i = 0; i<alder.length; i++) {
5:
                        if(age_m >= alder[i].alder_min && (age_m < alder[i].alder_max || !alder[i].alder_max)) {
6:
                           var opt = drpdwn.appendChild(document.createElement('option'));
7:
                           opt.value = alder[i].id;
8:
                           opt.textContent = alder[i].namn_utf+' ' +alder[i].alder_min_text+' '+alder[i].alder_max_text;
9:
                          }
10:
                        }
11:
                        if(drpdwn.childNodes.length) drpdwn.insertBefore(document.createElement('option'), drpdwn.firstChild).textContent = ' - Välj - ';
12:
                        else drpdwn.appendChild(document.createElement('option')).textContent = 'Ingen passande';


Nu vill jag ändra aå att det skapas en serie av checkboxar istället för en dropdown, hur gör jag då?

Syftet är att kunna välja flera samtidigt, inte bara ett värde.
Listan ska sedan byggas med if:ar så att vissa val av checkboxar kan väljas tillsammans men andra inte. Här tänker jag mig att jag har sparat i db vilka som INTE kan väljas tillsammans istället för de som faktisk kan väljas tillsammans.
Alltså, OM jag har 5 val, 5 checkboxar, man ska kunna välja 1 tillsammans med alla andra, 2 med 5, hur stoppar jag in det i scriptet ovan (efter att det är ändrat till att bygga checkboxar naturligtvis).

Listan på checkboxar kan teoretiskt bli väldigt lång, och i slutändan blir det fler kombinationer som inte passar än de som passar.

Tack på förhand!
 
Till toppen på sidan
Visa användarprofil Skicka privat meddelande
harald_b
Moderator



Medlem i: 4715 dagar
Från: Tavesta
Status: Offline



#742453
Inlägg Skrivet: 2019-01-25 02:57      Ämne: Citera

Du vet att det går att skapa en selectbox där man kan välja många val också?
KOD:
1:
<select multiple="multiple"><option ....


Om du vill skapa många checkboxar så lägger du dem lämpligtvis i en omslutande <fieldset> och gör ungefär som nu.
Om det är ett formulär som skall postas så kan det vara lämpligt att sätta samma namn, men med avslutande [] (exempel name="checkboxname[]") på alla checkboxar, och olika value.
 

_________________
R.r - Ett fritt affärssystem
Till toppen på sidan
Visa användarprofil Skicka privat meddelande
marcusgarden



Medlem i: 3254 dagar

Status: Offline



#742458
Inlägg Skrivet: 2019-01-29 03:18      Ämne: Citera

Hej och tack för svar!

Ok, jag provar med multiple-varianten:)

Man det svarar endast på en bråkdel av den egentliga frågan, den egentliga frågan är hur jag bygger en for/if-sats som aktiverar/avaktiverar vissa alternativ beroende på de val jag gör inne i själv listan?
 
Till toppen på sidan
Visa användarprofil Skicka privat meddelande
harald_b
Moderator



Medlem i: 4715 dagar
Från: Tavesta
Status: Offline



#742459
Inlägg Skrivet: 2019-01-29 14:03      Ämne: Citera

Ja, jag förstår att det stora problemet är hur du skall förhindra att ogiltiga kombinationer väljs.
Jag skulle tro att den enklaste lösningen är att ha en lista med giltiga ELLER ogiltiga kombinantioner av val (hellst den mindre av dessa mängder), och testa valet mot den så snart det ändras.
Du kan koppla kod till 'input' eller oninput på <select> för att köra kod när valet ändras.
Du kan skapa en sträng med aktuell kombination av val:
KOD:
1:
   var opt = drpdwn.options;
2:
   var val = ''
3:
   for(var i=0; i<opt.length; i++) if(opt[i].selected) val +=opt[i].value+';';
4:
   
5:
   console.log( val)

Sedan kollar du om kombinationen finns i listan över giltiga/ogiltiga kombinationer. Det kan antingen göras genom att listan laddas in i javascriptet, eller att kombinationen skickas till servern med AJAX eller liknande.
KOD:
1:
var ogiltigt_val = listamedkombinationer.includes(val);

Ett hundratal eller ett par hundra kombinationer borde inte vara något större problem att bädda in i javascriptet. Blir det fler kanske det kan vara värt att fundera på andra lösningar.

Om det är så att det går att räkna ut vilka kombinationer som är giltiga eller ogiltiga så finns det troligtvis betydligt bättre lösningar än den här.
Skall jag komma med några förslag hur det kan göras måste jag veta betydligt mer om vad det handlar om.
 

_________________
R.r - Ett fritt affärssystem
Till toppen på sidan
Visa användarprofil Skicka privat meddelande
Visa tidigare inlägg:   
Skapa nytt inlägg   Svara på inlägget
PHPportalen Forum Index » HTML/CSS/JavaScript/Design
Hoppa till:  
Du kan inte skapa nya inlägg i det här forumet
Du kan inte svara på inlägg i det här forumet
Du kan inte ändra dina inlägg i det här forumet
Du kan inte ta bort dina inlägg i det här forumet
Du kan inte rösta i det här forumet
Du kan inte bifoga filer i detta forum
Du kan inte ladda ner filer från detta forum
Kontakta oss på adressen: info@phpportalen.net
Webbplatsen bygger i grunden på phpBB © 2001, 2002 phpBB Group

Modifieringar har senare gjorts i systemet av PHPportalen
Sid och logotypdesign skapad av Daren Jularic