Avatar billede mac10 Nybegynder
19. januar 2010 - 13:44 Der er 6 kommentarer og
1 løsning

Select multiple - Gemmer kun dem der er markeret?

Hej allesammen,

Jeg benytter denne her smarte multiple select med jQuery:
http://blog.jeremymartin.name/2008/02/easy-multi-select-transfer-with-jquery.html#

Når man gemmer data i MySQL DB og henter det igen så har jeg fået den til at vise dem man har valgt (højre), og dem som endnu ikke er valgt (venstre).

Det hele virker fint, lige bortset fra at når jeg klikker "Gem" så gemmer den kun dem som decideret er markerede i højre kasse. Altså hvis jeg holder <SHIFT> inde og vælger dem allesammen og trykker gem så virker det fint, men hvis jeg kun markere den ene så gemmer den kun dem. Hvordan får jeg den til at gemme alle data i et select field?

Lige nu har jeg:
<select multiple name="cat_id[]" id="cat_id">
...

Og i PHP har jeg:
$cat_array = $_POST['cat_id'];

Og så smækker jeg det ind i databasen:

foreach ($cat_array as &$value) {   
... Indsætter data her ...
}

Hvordan kan jeg gøre sådan at den ikke kun tager de markerede, men alle som er i den select form?
Avatar billede repox Seniormester
19. januar 2010 - 13:48 #1
Det er et javascript spørgsmål; der medsendes kun de options der er valgt af klienten.
PHP kan ikke løse den opgave for dig.
I eksemplet du henviser til er der også anvendt en funktionalitet der gør at alle dem der tilføjes i boksen til højre pr. automatik er selected.
Avatar billede mac10 Nybegynder
19. januar 2010 - 13:54 #2
Ja, men hvis nu man vælger at fjerne den ene så er det kun den der er selected. Når den er fjernet og man klikker "Gem" så vil den jo ikke have nogle selected :S

Så måske skal jeg lave en onblur for feltet og sørge for den altid vælger allesammen når man klikker væk efterfølgende?
Avatar billede mac10 Nybegynder
19. januar 2010 - 14:08 #3
Jeg brugte denne her kode i JS:

function selectAllOptions(formID)
{
var selObj = document.getElementById(formID);
for (var i=0; i<selObj.options.length; i++) {
selObj.options[i].selected = true;
}
}

Og på min submit knap:
onclick="selectAllOptions('cat_id');

Og problemet vil så være om man har JS aktiveret, men det er ligegyldigt i mit tilfælde da man skal have JS aktiveret for overhovedet at komme til ovenstående.

Smid et svar repox fordi du satte min hjerne igang så jeg kunne komme med en løsning på et problem jeg har arbejdet en halv time på.

Tak.
Avatar billede repox Seniormester
19. januar 2010 - 14:10 #4
Igen; PHP kan ikke løse problemet.
Hvis du skal have hjælp til jQuery må du spørge i den relevante kategori.
Løsningen ville være at lave et javascript der  når du submitter din form - aktivt vælger alle dine options i det select element du vil have.
Avatar billede repox Seniormester
19. januar 2010 - 14:11 #5
Behold du bare pointene selv; du løste selv opgaven.
Avatar billede mac10 Nybegynder
19. januar 2010 - 14:59 #6
Det er ligegyldigt, du bidragede til at jeg selv kunne finde det svar jeg søgte, vil ikke tage mine egne point. Så smid venligst et svar, tak.
Avatar billede repox Seniormester
19. januar 2010 - 15:02 #7
Det fik du her, så
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester