Oprettet man. d. 06. januar 2003 kl. 19:26:50

connorz
connorz (15.549 point. Point ude: 60)

Markeringen af alle/ingen checkboxe...

Jeg har en form med mange checkboxe. De er navngivet med NAME='box[]' så alle markerede elementer bliver sendt videre i ét array.
Nu vil jeg gerne have en knap på min form som markerer alle checkboxene på én gang. (desuden vil jeg gerne have en, der fjerner alle markeringer, men det må vel være ca. samme løsning). Jeg ved godt at løsningen i sidste ende må ligge i JavaScript, men jeg har det problem, at jeg har navngivet checkboxene som jeg har.

Skrevet man. d. 06. januar 2003 kl. 21:30:37| #1

olebole
olebole (214.613 point)
<ole>

box[] er ikke et tilladeligt navn i forhold til HTML-standarden. Et navn eller en id må ikke indeholde brackets.
Jeg ved godt php.net pusher denne elendige løsning, men det har ikke noget med HTML at gøre. Desuden er der ingen somhelst grund til, at checkbokse skal ligge i et array. De er ligeså lette at bearbejde på serveren, hvis ikke de ligger i et array  :)

Hvad det andet angår, kan du gøre sådan:

<script type="text/JavaScript">
function check( f, on_off ) {
    for ( i=0; i<f.length; i++ ) {
        var e = f.elements[i];
        if ( e.type=="checkbox" && e.name.indexOf("box")!=-1 ) e.checked = on_off
    }
}
</script>

<form>
    <input type="checkbox" name="box1"><br>
    <input type="checkbox" name="box2"><br>
    <input type="checkbox" name="box3"><br>
    <input type="checkbox" name="box4"><br><br>
    <button onclick="check(this.form, 1)">TEST on</button><br>
    <button onclick="check(this.form, 0)">TEST off</button>
</form>

/mvh
</bole>

Skrevet man. d. 06. januar 2003 kl. 23:00:37| #2

broegaard
broegaard (20.972 point)
Ikke at jeg har en bedre løsning men den løsning virker ikke i mozilla.

Skrevet man. d. 06. januar 2003 kl. 23:18:38| #3

olebole
olebole (214.613 point)
Sorry ... jeg glemte, at Mozilla/NS fejlfortolker button-elementet og submitter formen, når der klikkes  :(
Script'et fungerer fint, men formen submittes p.gr.a. knappen. Løsningen er at returnere false:
  onclick="check(this.form, 1);return false"

/mvh

Skrevet tir. d. 07. januar 2003 kl. 14:38:24| #4

connorz
connorz (15.549 point)
jo men så er problemet, at de checkede checkboxe ikke submittes til PHP som et array - og det var det, der ville være meget smart for mig. Har I en løsning, der kan kompensere for dette? Kan man i en enkel for-løkke i PHP undersøge variabler med navnene box1, box2, box3 osv.?

Skrevet tir. d. 07. januar 2003 kl. 19:21:54| #5

olebole
olebole (214.613 point)
Hehe ... nu er det jo ikke, hvad den enkelte finder smart, der sætter reglerne  ;o)
Denne her løsning gør det overflødigt at overtræde HTML-standarden:

foreach ($_POST as $key => $value) {
    if ( strpos($key, "box")!==false ) print $key." : ".$value."<br>\n";
}

Her printer jeg dem blot ud, men du kan jo gøre ved dem, hvad du vil.
/mvh

Skrevet ons. d. 08. januar 2003 kl. 17:12:15| #6

connorz
connorz (15.549 point)
olebole>>>lav et svar - jeg skal lige være sikker på jeg kan få det til at virke, men ideen er vist god nok...

Skrevet ons. d. 08. januar 2003 kl. 17:24:20| #7

olebole
olebole (214.613 point)
Jeg har selv brugt den masser af gange, så jeg er sikker på, den er god nok - men test den selv, det er altid klogt  ;o)

Til gengæld kan du ikke bruge denne metode til multiple selects, hvor man støder ind i samme problem. Det HTML-element er nok det dårligst konstruerede ... tenderende det ubrugelige, hvis HTML-standarden skal overholdes.
Her kan værdierne kun ekstraheres, hvis metoden er 'GET' - og så skal du naturligvis 'lede' i $_GET.

Prøver du at sende en form, hvori du har en multiple select (name="bla") med method="get", vil du i adresse-linien på det modtagende dokument se:
  ?bla=valgt_værdi_1&bla=valgt_værdi_2&bla=valgt_værdi_3
hvilket ikke er overbevisende begavet - og umuligt at arbejde med  :(
/mvh

Skrevet ons. d. 08. januar 2003 kl. 17:26:14| #8

connorz
connorz (15.549 point)
ja for hvad står der så egentlig i $bla?!?
men som du siger må det virke med $_GET...

Tak for tippet...

Skrevet ons. d. 08. januar 2003 kl. 17:43:32| #9

olebole
olebole (214.613 point)
"Her kan værdierne kun ekstraheres, hvis metoden er 'GET' - og så skal du naturligvis 'lede' i $_GET."
Var en tanketorsk ...! Sorry  ;o)

Ved en multiple select sendt med 'GET', kan du gøre dette:

$q = explode( "&", $_ENV[QUERY_STRING]);
for ( $i=0; $i<count($q); $i++) {
    $tmp = explode( "=", $q[$i] );
    if ( strpos( $tmp[0], "bla" )!==false ) print $tmp[1]."<br>\n";
}

/mvh

Skrevet ons. d. 08. januar 2003 kl. 17:48:10| #10

rzj
rzj (20.099 point)
olebole>>Så er det da mærkeligt at http://validator.w3.org ikke brokker sig over navngivningen <input type='text' name='box[]'> ved validering med HTML 4.01 Transitional. Det er jo dem der sætter standarden, ik?
/raz

Skrevet ons. d. 08. januar 2003 kl. 17:52:07| #11

olebole
olebole (214.613 point)
Nej, ikke spor  :)
Validatoren er ikke perfekt ... du skal kikke i W3C's rekommendationer - det er dem, validatoren efter bedste evne skal forsøge at validere din kode op mod.
Validatoren er et stykke software, som du ikke skal stole på ... den er kun ment som en hjælp  ;o)
/mvh

Skrevet ons. d. 08. januar 2003 kl. 17:55:19| #12

olebole
olebole (214.613 point)
Et 'name' eller en 'id' _skal_ starte med et bogstav.
Derefter må det indeholde bogstaver (a-z og A-Z), tal, underscore, punktum og bindestreg ... _intet_ andet  ;o)
/mvh

Skrevet tor. d. 09. januar 2003 kl. 10:38:26| #13

rzj
rzj (20.099 point)
olebole>>Ok, men jeg synes nu det er et smart 'hack'...
Du skriver at det er ligeså let at gøre det på anden måde, hvilken måde er er det, hvis jeg vil have resultater af input felter i et array med referencen $box ?

Skrevet tor. d. 09. januar 2003 kl. 17:44:05| #14

olebole
olebole (214.613 point)
1. Du må lægge din (for PHP'ere så almindelige) array-fiksering af dig  :)
2. Du kan jo gøre nøjagtig det samme med text-inputs, som jeg lige har vist - og så kan du fylde dem i arrays eller gøre med dem, hvad du vil.

Havde meningen med HTML-elementer været, at de på serveren skulle optræde i array-form, var HTML grundlæggende blevet helt anderledes opbygget  :)
/mvh

Skrevet tor. d. 09. januar 2003 kl. 17:45:31| #15

cozey
cozey (10.880 point)
Hurtigt sp.

-Hvis du ved  at s´varet ligger i et javascript, hvor pokker har du så lagt det i PHP-kategorien?  :o)

Skrevet tor. d. 09. januar 2003 kl. 17:48:01| #16

olebole
olebole (214.613 point)
PS: Det er ikke et 'hack', men en fejl, der for tiden accepteres af browsere - men du ved ikke, om du skal lave det om i morgen.
Laver man løsninger, man tager penge for er det noget 'grisseri', at bygge sin kode på browser-bugs ... det er noget, man kan gøre, hvis det er en privat side om huskattens kønsliv el. lign.  :)
Man kan i hvertfald aldrig komme i nærheden af at kalde sin løsning professionel.

Skrevet tor. d. 09. januar 2003 kl. 17:49:28| #17

olebole
olebole (214.613 point)
cozey >> Hvorfor vrøvler du nu om JS?

Skrevet tor. d. 09. januar 2003 kl. 18:45:16| #18

rzj
rzj (20.099 point)
olebole>> tak for svar og sarkasme.
ad.1. Jeg er ikke specielt array fikseret, faktisk går mit ? jo netop på at undgå at være det.
ad. 2. Jeg havde ikke opdaget at du havde lavet en losnung ovenfor.

Skrevet tor. d. 09. januar 2003 kl. 19:08:01| #19


Skriv et indlæg




Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] [img]link til billede[/img]
Web- og emailadresser omdannes automatisk til links

Log ind

   

   

Seneste spørgsmål

Brugerliste med link til profil

Oprettet den 26. maj 2012 kl. 14.29
sayn giver 30 point for svar | Giv et svar »

php curl driller

Oprettet den 26. maj 2012 kl. 08.31
PHPnQrd giver 200 point for svar | Giv et svar »

Array i array

Oprettet den 25. maj 2012 kl. 08.32
sebster giver 60 point for svar | Giv et svar »



   




Tips & Tricks fra PC World

Teaser billede

Læserne: Her er vores værste it-indkøb

Det er ikke al it-udstyr, som er det rene guld. Her er nogle af læsernes skrækhistorier.


Anmeldelser fra PC World

Teaser billede

Test: Mobil med Ferrari-design - og en Trabant-motor

Motorola har begået endnu en smartphone med lækkert design og potentiale til at være blandt de bedste. Men den når ikke i mål. Se her hvorfor.


Seneste blogindlæg

Teaser billede

Tvangslukke spørgsmål: Hvad er den bedste løsning?

Hej Vi har mange åbne spørgsmål på Eksperten. Vi ville gerne tvangslukke dem - så et spørgsmål efter f.eks. 6 måneder lukkes. Men der er et par uklarheder som ville være gode at få lidt input til:...


Nyheder fra PC World

Teaser billede

Sådan siger du farvel til Facebook

Læs her, hvordan du dropper Facebook og i stedet anvender nogle brugervenlige alternativer, så du stadig kan være social på nettet.


Nyheder fra Computerworld

Teaser billede

Galleri: De fedeste håndholdte gennem 40 år

Her har du de mest banebrydende håndholdte computere gennem alle tider.


Kurser
Samarbejdspartnere

Udgiver · © 2012 IDG Danmark A/S · Hørkær 18 · 2730 Herlev · Tlf.: 77 300 300 · Fax: 77 300 301 · Brug af personoplysninger