|
| manipulere et array af checkboxe Fra : Kim Emax |
Dato : 21-09-09 07:23 |
|
hejsa
Jeg har brug for at lave en toggle funktion til checkboxe og det
fungerer også fint så længe checkboxene er en simpel variabel, men
ikke når det er et array (jeg bruger værdien i Key´en senere i
scriptet)
<script language="JavaScript">
<!--
function toggleAll(field) {
for (i = 0; i < field.length; i++)
field[i].checked = true; // her tænker jeg at jeg vil ændre
værdien på field[1][i], field[2][i], field[3][i] osv
}
-->
</script>
<form name="myform" action="test_checkboxes.php" method="post">
<b>Alm. checkboxe</b>
<input type="checkbox" id="chkbx2" name="list" value="1">test1<br>
<input type="checkbox" id="chkbx2" name="list" value="2">test2<br>
<input type="checkbox" id="chkbx2" name="list" value="3">test3<br>
<p>
<b>Array checkboxe</b><br>
<input type="checkbox" id="chkbx" name="list[1]" value="1">test1<br>
<input type="checkbox" id="chkbx" name="list[2]" value="2">test2<br>
<input type="checkbox" id="chkbx" name="list[3]" value="3">test3<br>
<input type="button" name="CheckAll" value="Check All"
onClick="toggleAll(document.myform.list)">
Helt simpelt burde det bare handle om at smide [værdi] ind efter field
i for loopet, som jeg har skrevet i kommentaren, men det kan jeg sgu
ikke få til at virke. Hvordan gøres dette lige?
--
Mvh
Kim Emax
| |
Kim Emax (21-09-2009)
| Kommentar Fra : Kim Emax |
Dato : 21-09-09 07:52 |
|
On 21 Sep., 15:22, Kim Emax <kime...@gmail.com> wrote:
> hejsa
>
> Jeg har brug for at lave en toggle funktion til checkboxe og det
> fungerer også fint så længe checkboxene er en simpel variabel, men
> ikke når det er et array (jeg bruger værdien i Key´en senere i
> scriptet)
>
> <script language="JavaScript">
> <!--
> function toggleAll(field) {
> for (i = 0; i < field.length; i++)
> field[i].checked = true; // her tænker jeg at jeg vil ændre
> værdien på field[1][i], field[2][i], field[3][i] osv}
>
> -->
> </script>
>
> <form name="myform" action="test_checkboxes.php" method="post">
> <b>Alm. checkboxe</b>
> <input type="checkbox" id="chkbx2" name="list" value="1">test1<br>
> <input type="checkbox" id="chkbx2" name="list" value="2">test2<br>
> <input type="checkbox" id="chkbx2" name="list" value="3">test3<br>
> <p>
> <b>Array checkboxe</b><br>
> <input type="checkbox" id="chkbx" name="list[1]" value="1">test1<br>
> <input type="checkbox" id="chkbx" name="list[2]" value="2">test2<br>
> <input type="checkbox" id="chkbx" name="list[3]" value="3">test3<br>
>
> <input type="button" name="CheckAll" value="Check All"
> onClick="toggleAll(document.myform.list)">
>
> Helt simpelt burde det bare handle om at smide [værdi] ind efter field
> i for loopet, som jeg har skrevet i kommentaren, men det kan jeg sgu
> ikke få til at virke. Hvordan gøres dette lige?
Dette kan jeg få til at gøre som jeg vil:
var totalCheckBoxes = 5;
for (j = 0; j < totalCheckBoxes; j++) {
// alert (field+"["+j+"]")
document.myform["list[1]"].checked = true;
}
Men prøver jeg:
document.myform["list[j]"].checked = true;
document.myform["list[+j+]"].checked = true;
document.myform["list["+j+"]"].checked = true;
document.myform["list['+j+']"].checked = true;
Så får jeg en fejl. Det er sikkert en JS spisfindighed som jeg ikke
kender til...
--
Mvh
Kim Emax
| |
Birger Sørensen (21-09-2009)
| Kommentar Fra : Birger Sørensen |
Dato : 21-09-09 16:01 |
|
Kim Emax sendte dette med sin computer:
> On 21 Sep., 15:22, Kim Emax <kime...@gmail.com> wrote:
>> hejsa
>>
>> Jeg har brug for at lave en toggle funktion til checkboxe og det
>> fungerer også fint så længe checkboxene er en simpel variabel, men
>> ikke når det er et array (jeg bruger værdien i Key´en senere i
>> scriptet)
>>
>> <script language="JavaScript">
>> <!--
>> function toggleAll(field) {
>> for (i = 0; i < field.length; i++)
>> field[i].checked = true; // her tænker jeg at jeg vil ændre
>> værdien på field[1][i], field[2][i], field[3][i] osv}
>>
>> -->
>> </script>
>>
>> <form name="myform" action="test_checkboxes.php" method="post">
>> <b>Alm. checkboxe</b>
>> <input type="checkbox" id="chkbx2" name="list" value="1">test1<br>
>> <input type="checkbox" id="chkbx2" name="list" value="2">test2<br>
>> <input type="checkbox" id="chkbx2" name="list" value="3">test3<br>
>> <p>
>> <b>Array checkboxe</b><br>
>> <input type="checkbox" id="chkbx" name="list[1]" value="1">test1<br>
>> <input type="checkbox" id="chkbx" name="list[2]" value="2">test2<br>
>> <input type="checkbox" id="chkbx" name="list[3]" value="3">test3<br>
>>
>> <input type="button" name="CheckAll" value="Check All"
>> onClick="toggleAll(document.myform.list)">
>>
>> Helt simpelt burde det bare handle om at smide [værdi] ind efter field
>> i for loopet, som jeg har skrevet i kommentaren, men det kan jeg sgu
>> ikke få til at virke. Hvordan gøres dette lige?
>
> Dette kan jeg få til at gøre som jeg vil:
>
> var totalCheckBoxes = 5;
> for (j = 0; j < totalCheckBoxes; j++) {
> // alert (field+"["+j+"]")
> document.myform["list[1]"].checked = true;
> }
>
> Men prøver jeg:
> document.myform["list[j]"].checked = true;
> document.myform["list[+j+]"].checked = true;
> document.myform["list["+j+"]"].checked = true;
> document.myform["list['+j+']"].checked = true;
>
> Så får jeg en fejl. Det er sikkert en JS spisfindighed som jeg ikke
> kender til...
Nej. Det er en HTML fejl :
fra http://www.w3.org/TR/html401/types.html#type-cdata
"ID and NAME tokens must begin with a letter ([A-Za-z]) and may be
followed by any number of letters, digits ([0-9]), hyphens ("-"),
underscores ("_"), colons (":"), and periods (".")."
Altså [ og ] er ikke lovlige karakterer i hverken id eller name
attributten.
Nu ved jeg ikke hvad du skal bruge det til, så det er lidt svært at
komme med gode idéer.
Jeg plejer at bruge id med understregning med et tal, og derefter en
eller anden form for tekst-parsing.
Hvis du absolut skal have dine boxe på arrayform, f.eks.
my_boxes = new Array();
for ( idx = 0; idx < 5; idx++) {
my_boxes[ idx] = document.getElementById( 'list_'+idx);
}
I øvrigt er din kode vist Jscript (virker kun i IE) og ikke javascript.
Birger
--
http://varmeretter.dk - billig, sund og hurtig mad
http://bbsorensen.dk
| |
Lasse Reichstein Nie~ (21-09-2009)
| Kommentar Fra : Lasse Reichstein Nie~ |
Dato : 21-09-09 20:23 |
|
Martin <martin@aarhof.invalid> writes:
> Kim Emax wrote:
>> On 21 Sep., 17:00, Birger Sørensen <s...@bbsorensen.com> wrote:
>>
>>> Nej. Det er en HTML fejl :
>>> fra http://www.w3.org/TR/html401/types.html#type-cdata
>>> "ID and NAME tokens must begin with a letter ([A-Za-z]) and may be
>>> followed by any number of letters, digits ([0-9]), hyphens ("-"),
>>> underscores ("_"), colons (":"), and periods (".")."
>>> Altså [ og ] er ikke lovlige karakterer i hverken id eller name
>>> attributten.
>
> [] ER lovlige, dette angiver et array.
>
> <input type="checkbox" name="checkbox[]" value="1" />
> <input type="checkbox" name="checkbox[]" value="2" />
> <input type="checkbox" name="checkbox[]" value="3" />
> <input type="checkbox" name="checkbox[]" value="4" />
>
> Er fulgt lovligt
>
> Eller ihvertfald w3c brokker sig ikke, og det virker helt perfekt
Det er korrekt at det er tilladt at bruge "[]" i name-attributter.
Deres indhold er nemlig ikke NAME tokens (det er bare et tilfældigt
sammenfald), men bare CDATA, som gerne må indeholde "[]"-tegn.
Så ovenstående HTML er gyldig.
/L
--
Lasse Reichstein Holst Nielsen
DHTML Death Colors: <URL: http://www.infimum.dk/HTML/rasterTriangleDOM.html>
'Faith without judgement merely degrades the spirit divine.'
| |
Rune Jensen (21-09-2009)
| Kommentar Fra : Rune Jensen |
Dato : 21-09-09 20:32 |
|
Lasse Reichstein Nielsen skrev:
> Martin <martin@aarhof.invalid> writes:
>> <input type="checkbox" name="checkbox[]" value="1" />
>> <input type="checkbox" name="checkbox[]" value="2" />
>> <input type="checkbox" name="checkbox[]" value="3" />
>> <input type="checkbox" name="checkbox[]" value="4" />
>>
>> Er fulgt lovligt
>>
>> Eller ihvertfald w3c brokker sig ikke, og det virker helt perfekt
>
> Det er korrekt at det er tilladt at bruge "[]" i name-attributter.
> Deres indhold er nemlig ikke NAME tokens (det er bare et tilfældigt
> sammenfald), men bare CDATA, som gerne må indeholde "[]"-tegn.
> Så ovenstående HTML er gyldig.
Vidste jeg ikke. Men så blev man så klogere;) Vil man så få fire værdier
retur ved submit lige meget, om der er checket af i checkboksene eller
ej (evt nul-værdier ved dem, som ikke er checked)?
MVH
Rune Jensen
| |
Lasse Reichstein Nie~ (21-09-2009)
| Kommentar Fra : Lasse Reichstein Nie~ |
Dato : 21-09-09 21:45 |
|
Rune Jensen <runeofdenmark@gmail.com> writes:
>> Martin <martin@aarhof.invalid> writes:
>
>>> <input type="checkbox" name="checkbox[]" value="1" />
>>> <input type="checkbox" name="checkbox[]" value="2" />
>>> <input type="checkbox" name="checkbox[]" value="3" />
>>> <input type="checkbox" name="checkbox[]" value="4" />
....
> Vidste jeg ikke. Men så blev man så klogere;) Vil man så få fire
> værdier retur ved submit lige meget, om der er checket af i
> checkboksene eller ej (evt nul-værdier ved dem, som ikke er checked)?
Værdien af en form-control bliver sendt hvis kontrollen er "successfuld",
se fx HTML 4.01 specificationen afsnit 17.13.2:
http://www.w3.org/TR/html4/interact/forms.html#h-17.13.2
For en checkbox betyder det at den skal have et navn og være "on".
Altså bliver der ikke sendt en værdi for dem der ikke er checked.
/L
--
Lasse Reichstein Holst Nielsen
DHTML Death Colors: <URL: http://www.infimum.dk/HTML/rasterTriangleDOM.html>
'Faith without judgement merely degrades the spirit divine.'
| |
Rune Jensen (22-09-2009)
| Kommentar Fra : Rune Jensen |
Dato : 22-09-09 18:22 |
|
Lasse Reichstein Nielsen skrev:
> Værdien af en form-control bliver sendt hvis kontrollen er "successfuld",
> se fx HTML 4.01 specificationen afsnit 17.13.2:
> http://www.w3.org/TR/html4/interact/forms.html#h-17.13.2
> For en checkbox betyder det at den skal have et navn og være "on".
> Altså bliver der ikke sendt en værdi for dem der ikke er checked.
Tak for at få det slået fast.
MVH
Rune Jensen
| |
Rune Jensen (21-09-2009)
| Kommentar Fra : Rune Jensen |
Dato : 21-09-09 17:22 |
|
Kim Emax skrev:
> hejsa
>
> Jeg har brug for at lave en toggle funktion til checkboxe og det
> fungerer også fint så længe checkboxene er en simpel variabel, men
> ikke når det er et array (jeg bruger værdien i Key´en senere i
> scriptet)
>
> <script language="JavaScript">
> <!--
> function toggleAll(field) {
> for (i = 0; i < field.length; i++)
> field[i].checked = true; // her tænker jeg at jeg vil ændre
> værdien på field[1][i], field[2][i], field[3][i] osv
> }
> -->
> </script>
>
> <form name="myform" action="test_checkboxes.php" method="post">
> <b>Alm. checkboxe</b>
> <input type="checkbox" id="chkbx2" name="list" value="1">test1<br>
> <input type="checkbox" id="chkbx2" name="list" value="2">test2<br>
> <input type="checkbox" id="chkbx2" name="list" value="3">test3<br>
> <p>
> <b>Array checkboxe</b><br>
> <input type="checkbox" id="chkbx" name="list[1]" value="1">test1<br>
> <input type="checkbox" id="chkbx" name="list[2]" value="2">test2<br>
> <input type="checkbox" id="chkbx" name="list[3]" value="3">test3<br>
Jeg er ikke helt sikker på, hvad du vil. Hvis du vil danne et array,
skal du give elementerne samme name. Har to elementer samme name, dannes
der et array, hvor første element får index 0, andet får index 1 og
sådan videre. Så vil du danne et array ud af name't "list", skal alle
have det name. Hverken mere eller mindre. Læg mærke til, samme ID i HTML
derimod ikke er tilladt, og kan give ikke-kendte resultater. Du skal
bruge class, i så tilfælde. Der kan ikke oprettes arrays i HTML/CSS (men
man kan nogle andre ting, som også er smarte i CSS).
<input type="checkbox" class="chkbx" name="list" value="1">test1<br>
<input type="checkbox" class="chkbx" name="list" value="2">test2<br>
<input type="checkbox" class="chkbx" name="list" value="3">test3<br>
Stylingen på dine checkboxe kan måske optimeres, så du slet ikke behøver
class. Kommer an på formålet med dem.
Men med ovenstående har du nu et array (eller collection) af checkboxe
ved navn "list", som kan få styling via class "chkbx".
Du skal skelne imellem ID og Class på elementer, som er alene for
HTML/CSS, og så formens navne (name) på elementer, som bliver sendt med
ved afsendelse af formen (SUBMIT).
> <input type="button" name="CheckAll" value="Check All"
> onClick="toggleAll(document.myform.list)">
>
> Helt simpelt burde det bare handle om at smide [værdi] ind efter field
> i for loopet, som jeg har skrevet i kommentaren, men det kan jeg sgu
> ikke få til at virke. Hvordan gøres dette lige?
Overvejede, om man ikke bare i et loop kan gå igennem formens index, se
om det er et check-box-eklement, og i så fald afkrydse det, derefter gå
én op. Med mindre formen er kæme kæmpe stor, kan det ikke fylde mere end
et script som leder efter boxene via arrays. ...kræver jo så nok, man er
sikker på, man altid vil have ALLE checkboxe afkrdset med scriptet.
Under alle omstændigheder ville det nok være en hjælp at vide hvor og i
hvilken sammenhæng, det skal bruges.
MVH
Rune Jensen
| |
Kim Emax (21-09-2009)
| Kommentar Fra : Kim Emax |
Dato : 21-09-09 10:25 |
|
On 21 Sep., 17:00, Birger Sørensen <s...@bbsorensen.com> wrote:
> Nej. Det er en HTML fejl :
> fra http://www.w3.org/TR/html401/types.html#type-cdata
> "ID and NAME tokens must begin with a letter ([A-Za-z]) and may be
> followed by any number of letters, digits ([0-9]), hyphens ("-"),
> underscores ("_"), colons (":"), and periods (".")."
> Altså [ og ] er ikke lovlige karakterer i hverken id eller name
> attributten.
aha, det var ny viden her.
> Nu ved jeg ikke hvad du skal bruge det til, så det er lidt svært at
> komme med gode idéer.
> Jeg plejer at bruge id med understregning med et tal, og derefter en
> eller anden form for tekst-parsing.
Det har jeg sjovt nok brugt i gamle dage, før jeg opdagede at man
kunne lave arrays i input felterne.
I denne situation bruges til at opdatere en række brugeres data i en
omgang. PHP ræser arrayet igennem, når der submittes.
> Hvis du absolut skal have dine boxe på arrayform, f.eks.
> my_boxes = new Array();
> for ( idx = 0; idx < 5; idx++) {
> my_boxes[ idx] = document.getElementById( 'list_'+idx);
> }
Nu er du vidst igang med din understregningsløsning Jeg prøver
lige, hvad du foreslår her.
> I øvrigt er din kode vist Jscript (virker kun i IE) og ikke javascript.
Hvilken kode tænker du på? Det første jeg postede var blot et eksempel
på, hvad jeg ville gøre.
--
Mvh
Kim Emax
| |
Martin (21-09-2009)
| Kommentar Fra : Martin |
Dato : 21-09-09 20:18 |
|
Kim Emax wrote:
> On 21 Sep., 17:00, Birger Sørensen <s...@bbsorensen.com> wrote:
>
>> Nej. Det er en HTML fejl :
>> fra http://www.w3.org/TR/html401/types.html#type-cdata
>> "ID and NAME tokens must begin with a letter ([A-Za-z]) and may be
>> followed by any number of letters, digits ([0-9]), hyphens ("-"),
>> underscores ("_"), colons (":"), and periods (".")."
>> Altså [ og ] er ikke lovlige karakterer i hverken id eller name
>> attributten.
[] ER lovlige, dette angiver et array.
<input type="checkbox" name="checkbox[]" value="1" />
<input type="checkbox" name="checkbox[]" value="2" />
<input type="checkbox" name="checkbox[]" value="3" />
<input type="checkbox" name="checkbox[]" value="4" />
Er fulgt lovligt
Eller ihvertfald w3c brokker sig ikke, og det virker helt perfekt
| |
Kim Emax (21-09-2009)
| Kommentar Fra : Kim Emax |
Dato : 21-09-09 10:44 |
|
On 21 Sep., 18:21, Rune Jensen <runeofdenm...@gmail.com> wrote:
> Jeg er ikke helt sikker på, hvad du vil. Hvis du vil danne et array,
> skal du give elementerne samme name. Har to elementer samme name, dannes
> der et array, hvor første element får index 0, andet får index 1 og
> sådan videre. Så vil du danne et array ud af name't "list", skal alle
> have det name. Hverken mere eller mindre. Læg mærke til, samme ID i HTML
> derimod ikke er tilladt, og kan give ikke-kendte resultater. Du skal
> bruge class, i så tilfælde. Der kan ikke oprettes arrays i HTML/CSS (men
> man kan nogle andre ting, som også er smarte i CSS).
Ja, jeg vil danne et array, men det du foreslår virker ikke, når jeg
submitter i PHP, der overskrives variablen list´s værdi og bliver i
nedenstående tilfælde 3 - hvis jeg på den anden måde har market list
[1] og list[3], så har jeg begge værdierne i behold, således at jeg
ved at bruger 1 og bruger 3 skal opdateres.
> <input type="checkbox" class="chkbx" name="list" value="1">test1<br>
> <input type="checkbox" class="chkbx" name="list" value="2">test2<br>
> <input type="checkbox" class="chkbx" name="list" value="3">test3<br>
>
> Stylingen på dine checkboxe kan måske optimeres, så du slet ikke behøver
> class. Kommer an på formålet med dem.
ID var sat ind for at se om jeg kunne rende samtlige enslydende IDer
igennem, nu det lod til at JS tilsyneladende bestemte sig til at flere
identiske name´s måtte betyde at det var et array
> Men med ovenstående har du nu et array (eller collection) af checkboxe
> ved navn "list", som kan få styling via class "chkbx".
Det er desværre ikke brugbart i PHP regi.
> Du skal skelne imellem ID og Class på elementer, som er alene for
> HTML/CSS, og så formens navne (name) på elementer, som bliver sendt med
> ved afsendelse af formen (SUBMIT).
>
> > <input type="button" name="CheckAll" value="Check All"
> > onClick="toggleAll(document.myform.list)">
>
> > Helt simpelt burde det bare handle om at smide [værdi] ind efter field
> > i for loopet, som jeg har skrevet i kommentaren, men det kan jeg sgu
> > ikke få til at virke. Hvordan gøres dette lige?
>
> Overvejede, om man ikke bare i et loop kan gå igennem formens index, se
> om det er et check-box-eklement, og i så fald afkrydse det, derefter gå
> én op.
Det kan være det er en mulighed, problemet er at navnet ikke er ens
for checkboxene i og med de hedder [1], [2] osv. Derfor ville jeg bare
tjekke på list + [j], hvor j er tælleren i en forløkke (var i
oprindeligt, men så prøvede jeg med en inner og outer loop ting også)
> Med mindre formen er kæme kæmpe stor, kan det ikke fylde mere end
> et script som leder efter boxene via arrays. ...kræver jo så nok, man er
> sikker på, man altid vil have ALLE checkboxe afkrdset med scriptet.
Det vil være alle eller intet.
> Under alle omstændigheder ville det nok være en hjælp at vide hvor og i
> hvilken sammenhæng, det skal bruges.
jeg ønsker blot at kunne checke og unchecke samtlige checkboxe i en
form, hvor HTML´en ser sådan her ud:
<input type="checkbox" class="chkbx" name="list[1]"
value="1">test1<br>
<input type="checkbox" class="chkbx" name="list[2]"
value="2">test2<br>
<input type="checkbox" class="chkbx" name="list[3]"
value="3">test3<br>
dvs. jeg vil gøre dette:
document.myform["list[1]"].checked = true;
dette checker og unchecker fint den første linie, ændrer jeg tallet
til 2 er det 2. linie, der bliver ramt, så det virker sådan set fint,
bortset fra automatikken jeg får denne fejl i FF: Fejl:
document.myform["list[" + j + "]"] is undefined
Jeg tænker også man måske kunne regexe på dette name, hvis man kan
loope samtlige elementer i formen. Men min JS viden er lidt begrænset.
Håber du blev lidt klogere på problemet
--
mvh
Kim
| |
Rune Jensen (21-09-2009)
| Kommentar Fra : Rune Jensen |
Dato : 21-09-09 19:01 |
|
Kim Emax skrev:
> On 21 Sep., 18:21, Rune Jensen <runeofdenm...@gmail.com> wrote:
>
>> Jeg er ikke helt sikker på, hvad du vil. Hvis du vil danne et array,
>> skal du give elementerne samme name. Har to elementer samme name, dannes
>> der et array, hvor første element får index 0, andet får index 1 og
>> sådan videre. Så vil du danne et array ud af name't "list", skal alle
>> have det name. Hverken mere eller mindre. Læg mærke til, samme ID i HTML
>> derimod ikke er tilladt, og kan give ikke-kendte resultater. Du skal
>> bruge class, i så tilfælde. Der kan ikke oprettes arrays i HTML/CSS (men
>> man kan nogle andre ting, som også er smarte i CSS).
>
> Ja, jeg vil danne et array, men det du foreslår virker ikke, når jeg
> submitter i PHP, der overskrives variablen list´s værdi og bliver i
> nedenstående tilfælde 3 - hvis jeg på den anden måde har market list
> [1] og list[3], så har jeg begge værdierne i behold, således at jeg
> ved at bruger 1 og bruger 3 skal opdateres.
Vil du danne et to-dimensionalt array? Så at du har et antal brugere,
som hver har det samme antal checkboxe?
Jeg tror, hvis du har en URL til siden hvor det skal bruges, ville det
være en stor hjælp.. ;)
PS. Jeg har selv opgivet RegEX til alt andet end, i yderste
nødstilfælde. Det er vildt smart, og ret hurtigt i performance, men jeg
synes let, det kan blive uoverskueligt i selve koden. Så jeg ville vente
lidt, se om der ikke er andre løsninger først.
PPS. Jeg har googlet lidt på PHP og checkbox-collections, det lader til,
der foreslås det samme som din løsning - men det er altså ikke lovligt
HTML, som Birger også skriver..
MVH
Rune Jensen
| |
Birger Sørensen (21-09-2009)
| Kommentar Fra : Birger Sørensen |
Dato : 21-09-09 19:19 |
|
Kim Emax sendte dette med sin computer:
> On 21 Sep., 18:21, Rune Jensen <runeofdenm...@gmail.com> wrote:
8X
>> Med mindre formen er kæme kæmpe stor, kan det ikke fylde mere end
>> et script som leder efter boxene via arrays. ...kræver jo så nok, man er
>> sikker på, man altid vil have ALLE checkboxe afkrdset med scriptet.
>
> Det vil være alle eller intet.
>
8X
Giv alle checkboxene samme navn, og formen et id.
my_form = document.getElementById( 'myform');
boxes = my_form.getElementsByName( 'list');
for ( idx = 0; idx < boxes.count; idx++) {
boxes[ idx].checked = 'checked';
}
Birger
--
http://varmeretter.dk - billig, sund og hurtig mad
http://bbsorensen.dk
| |
Birger Sørensen (21-09-2009)
| Kommentar Fra : Birger Sørensen |
Dato : 21-09-09 19:22 |
|
Kim Emax sendte dette med sin computer:
> On 21 Sep., 18:21, Rune Jensen <runeofdenm...@gmail.com> wrote:
8X
>> Med mindre formen er kæme kæmpe stor, kan det ikke fylde mere end
>> et script som leder efter boxene via arrays. ...kræver jo så nok, man er
>> sikker på, man altid vil have ALLE checkboxe afkrdset med scriptet.
>
> Det vil være alle eller intet.
>
8X
Giv alle checkboxene samme navn, og formen et id.
my_form = document.getElementById( 'myform');
boxes = my_form.getElementsByName( 'list');
for ( idx = 0; idx < boxes.count; idx++) {
boxes[ idx].checked = 'checked';
}
Birger
for ( idx = 0; idx < boxes.length; idx++) {
skal det være i js :/
Birger
--
http://varmeretter.dk - billig, sund og hurtig mad
http://bbsorensen.dk
| |
Rune Jensen (21-09-2009)
| Kommentar Fra : Rune Jensen |
Dato : 21-09-09 19:43 |
|
Birger Sørensen skrev:
> Kim Emax sendte dette med sin computer:
>> On 21 Sep., 18:21, Rune Jensen <runeofdenm...@gmail.com> wrote:
> 8X
>>> Med mindre formen er kæme kæmpe stor, kan det ikke fylde mere end
>>> et script som leder efter boxene via arrays. ...kræver jo så nok, man er
>>> sikker på, man altid vil have ALLE checkboxe afkrdset med scriptet.
>>
>> Det vil være alle eller intet.
>>
> 8X
>
> Giv alle checkboxene samme navn, og formen et id.
>
> my_form = document.getElementById( 'myform');
> boxes = my_form.getElementsByName( 'list');
> for ( idx = 0; idx < boxes.count; idx++) {
> boxes[ idx].checked = 'checked';
> }
Det var ikke meget ;)
En anden ting, som jeg bed mærke i.. Kim skriver også, der er problemer
med PHP. Og jeg tror, det er fordi, der kun sendes en value, hvis boxen
er checked, men positionen er ikke den samme som i arrayet, hvis ikke
alle checkboxene er checked. Jeg har set flere forslag til løsninger,
bl.a. at bruge cookies til staten af checkboxen. Eller hidden fields.
Jeg kan godt se, hvis der køres på rent array, og f.eks. kun checkbox 3
er checked, vil den komme ind som nummer 1 i arrayet, selv om dens
position er 3. Så array-counten virker ikke lige til det, man kan se
værdi, men ikke for hvilken checkbox i arrayet, den værdi hører til, med
mindre, man har positionsværdien i value.
Jeg ved ikke, om det er det, der hentydes til, også fordi jeg er ikke
sikker på, hvad det skal bruges til, men jeg har selv haft samme problem
engang med checkbox collections. Man kan prøve at ændre til get i stedet
for post i formen, så kan man se selve arrayet i queryatring ved submit.
Det bør være komma-separeret.
Sorry iøvrigt, hvis jeg har misforstået lige dét problem ;)
MVH
Rune Jensen
| |
N/A (22-09-2009)
| Kommentar Fra : N/A |
Dato : 22-09-09 18:35 |
|
| |
N/A (22-09-2009)
| Kommentar Fra : N/A |
Dato : 22-09-09 18:35 |
|
| |
N/A (21-09-2009)
| Kommentar Fra : N/A |
Dato : 21-09-09 20:51 |
|
| |
N/A (21-09-2009)
| Kommentar Fra : N/A |
Dato : 21-09-09 19:01 |
|
| |
N/A (21-09-2009)
| Kommentar Fra : N/A |
Dato : 21-09-09 20:18 |
|
| |
N/A (21-09-2009)
| Kommentar Fra : N/A |
Dato : 21-09-09 20:18 |
|
| |
Kim Emax (21-09-2009)
| Kommentar Fra : Kim Emax |
Dato : 21-09-09 13:43 |
|
On Sep 21, 8:43 pm, Rune Jensen <runeofdenm...@gmail.com> wrote:
> En anden ting, som jeg bed mærke i.. Kim skriver også, der er problemer
> med PHP. Og jeg tror, det er fordi, der kun sendes en value, hvis boxen
> er checked, men positionen er ikke den samme som i arrayet, hvis ikke
> alle checkboxene er checked. Jeg har set flere forslag til løsninger,
> bl.a. at bruge cookies til staten af checkboxen. Eller hidden fields.
Niksen biksen, PHP fungerer fint Jeg har lagt et eksempel op til
dig her: http://emax.dk/js_array_test.php
Smider lige lidt mere kode ind efterhånden som jeg får det flyttet
over. Det jeg udvikler på ligger på en lokal maskine uden netadgang...
--
Mvh
Kim Emax
| |
Rune Jensen (21-09-2009)
| Kommentar Fra : Rune Jensen |
Dato : 21-09-09 20:51 |
|
Kim Emax skrev:
> On Sep 21, 8:43 pm, Rune Jensen <runeofdenm...@gmail.com> wrote:
>
>> En anden ting, som jeg bed mærke i.. Kim skriver også, der er problemer
>> med PHP. Og jeg tror, det er fordi, der kun sendes en value, hvis boxen
>> er checked, men positionen er ikke den samme som i arrayet, hvis ikke
>> alle checkboxene er checked. Jeg har set flere forslag til løsninger,
>> bl.a. at bruge cookies til staten af checkboxen. Eller hidden fields.
>
> Niksen biksen, PHP fungerer fint Jeg har lagt et eksempel op til
> dig her: http://emax.dk/js_array_test.php
Ah, jo, men der bruges jo [], som jeg så troede ikke var lovligt.
Egentlig er mine indlæg ikke så relevante mere, når det så ER lovligt at
bruge dem, jeg foreslog jo alle mulige krumspring;)
> Smider lige lidt mere kode ind efterhånden som jeg får det flyttet
> over. Det jeg udvikler på ligger på en lokal maskine uden netadgang...
Det ser jeg frem til. Jeg kan nok ikke hjælpe så meget med selve
javascriptet, men dit problem interesserer mig, for jeg har selv haft
problemer med checkboxe-collections og iøvrigt også arrays i JS. Det kan
være, det er ved at løse sig med en løsning på dit problem. Så jeg
følger lige lidt med her.
MVH
Rune Jensen
| |
Rune Jensen (21-09-2009)
| Kommentar Fra : Rune Jensen |
Dato : 21-09-09 20:58 |
|
Rune Jensen skrev:
> Kim Emax skrev:
>> Smider lige lidt mere kode ind efterhånden som jeg får det flyttet
>> over. Det jeg udvikler på ligger på en lokal maskine uden netadgang...
>
Det var liggodt som.. kan man mon også det i ASP? Det ville være ret
smart i hvert fald. Der holdes ikke arrayet position med de koder jeg
kender, derfor bruger jeg aldrig checkboxe, hvis jeg kan undgå det.
Nå, tid at skrubbe i seng.
MVH
Rune Jensen
| |
Stig Johansen (21-09-2009)
| Kommentar Fra : Stig Johansen |
Dato : 21-09-09 23:35 |
|
"Rune Jensen" <runeofdenmark@gmail.com> wrote in message
news:4ab7dae4$0$25190$456a7185@news.cirque.dk...
>
> Det var liggodt som.. kan man mon også det i ASP? Det ville være ret
> smart i hvert fald. Der holdes ikke arrayet position med de koder jeg
> kender, derfor bruger jeg aldrig checkboxe, hvis jeg kan undgå det.
Ikke sådan direkte, tror jeg.
Jeg har lavet en kopi af Kim's test her:
http://w-o-p-r.dk/test/checkbox.array.html
der kalder en generel dump af de parametre der er til rådighed.
Her kan du se, at der i virkeligheden er tale om forskellige navne, der
formentlig 'automagisk' bliver omdannet til arrays i PHP hvis navnet
indeholder [].
Det burde være relativt nemt at lave en lille toarray funktion hvis man har
lyst til det.
--
Med venlig hilsen/Best regards
Stig Johansen
| |
Rune Jensen (22-09-2009)
| Kommentar Fra : Rune Jensen |
Dato : 22-09-09 18:28 |
|
Stig Johansen skrev:
> "Rune Jensen" <runeofdenmark@gmail.com> wrote in message
> news:4ab7dae4$0$25190$456a7185@news.cirque.dk...
>> Det var liggodt som.. kan man mon også det i ASP? Det ville være ret
>> smart i hvert fald. Der holdes ikke arrayet position med de koder jeg
>> kender, derfor bruger jeg aldrig checkboxe, hvis jeg kan undgå det.
>
> Ikke sådan direkte, tror jeg.
> Jeg har lavet en kopi af Kim's test her:
> http://w-o-p-r.dk/test/checkbox.array.html
> der kalder en generel dump af de parametre der er til rådighed.
> Her kan du se, at der i virkeligheden er tale om forskellige navne, der
> formentlig 'automagisk' bliver omdannet til arrays i PHP hvis navnet
> indeholder [].
Jeg tror, jeg har fået nærmest fuld forståelse med form-afsendelse
efterhånden med jeres indlæg
> Det burde være relativt nemt at lave en lille toarray funktion hvis man har
> lyst til det.
Mit problem dengang, løste jeg ved at adskille med _ og nummer. Iøvrigt
noget frygteligt rod, da der var _mange_ elementer, og derfor jeg var på
udkig efter en alt. løsning.. Det var så ikke array, men man kunne se,
checkboxens nummer.
Så forskellen på PHP er, at ASP laver et array, hvis name er ens, mens
PHP laver array, hvis der er [nummer] i name.. der er jo både fordele og
ulemper ved begge. Umiddelbart ville ASP-modellen virke mest logisk for
mig, men den har så den bagdel, som sagt, man ikke kan se
array-positionen. Med PHP-modellen, der skal man så rette i HTMLen, hvis
man vil tilføje eller fjerne et element. Tjah.. men godt at blive
oplyst, i hvert fald ;)
MVH
Rune Jensen
| |
Stig Johansen (23-09-2009)
| Kommentar Fra : Stig Johansen |
Dato : 23-09-09 04:12 |
|
Rune Jensen wrote:
> Mit problem dengang, løste jeg ved at adskille med _ og nummer.
Den metode bruger jeg også.
Jeg ved ikke hvad du har brug for, hvis du har brug for noget, men du kan se
et eksempel her:
< http://w-o-p-r.dk/notes/show.base.asp?databasename=Notes>
(Der er ikke offentlig adgang, så det er nok kun Rune, der kan se den).
Hvis du klikker på create view, kan du se en autogenereret liste med felter
og checkboxe.
Til sidst har jeg så:
<input type='hidden' name='fieldcount' value='6'/>
> Iøvrigt
> noget frygteligt rod, da der var _mange_ elementer, og derfor jeg var på
> udkig efter en alt.
Jeg synes ikke det er noget rod.
I ASP koden er det bare et loop, der udskriver, og et loop (fieldcount), der
læser.
--
Med venlig hilsen
Stig Johansen
| |
Kim Emax (21-09-2009)
| Kommentar Fra : Kim Emax |
Dato : 21-09-09 14:20 |
|
On Sep 21, 9:57 pm, Rune Jensen <runeofdenm...@gmail.com> wrote:
> Det var liggodt som.. kan man mon også det i ASP? Det ville være ret
> smart i hvert fald. Der holdes ikke arrayet position med de koder jeg
> kender, derfor bruger jeg aldrig checkboxe, hvis jeg kan undgå det.
Nu er jeg lidt i tvivl om, hvad du mener med arrayets position, men
checker den holde da både key og value, hvis du f.eks. vælger 2,4 og 5
> Nå, tid at skrubbe i seng.
Ja, det er måske lidt af problemet Sov godt og tak for dine inputs
--
Mvh
Kim Emax
| |
Rune Jensen (22-09-2009)
| Kommentar Fra : Rune Jensen |
Dato : 22-09-09 18:35 |
|
Kim Emax skrev:
> On Sep 21, 9:57 pm, Rune Jensen <runeofdenm...@gmail.com> wrote:
>
>> Det var liggodt som.. kan man mon også det i ASP? Det ville være ret
>> smart i hvert fald. Der holdes ikke arrayet position med de koder jeg
>> kender, derfor bruger jeg aldrig checkboxe, hvis jeg kan undgå det.
>
> Nu er jeg lidt i tvivl om, hvad du mener med arrayets position, men
> checker den holde da både key og value, hvis du f.eks. vælger 2,4 og 5
Du kan faktisk se det i det link, som Stig sendte.
Lad os sige, du har fem checkboxe. Dem vil du gerne have skal være et
array. I ASP, der laves arrays ved at sætte samme name. Men... der
bliver jo kun sendt værdi, hvis checkboxen er "succesfuld". Hvilket vil
sige, at hvis du har en value, som _ikke_ er arrayets nummer, kan du
ikke se, hvilken checkbox, som er krydset (nødvendigvis).
F.eks., du afkrydser checkbox 1 og fem. Det vil ikke afsendes sådan her:
value,,,,value
men sådan her:
value, value
Så den første, den passer med at checkbox ét er checked, og også har
position ét i arrayet, men nummer fem hedder pludselig to i arrayet.
Sådan vil det ikke være i PHP, hvor man specifikt kan give name efter
arrayets position. Men som Stig skriver, kan metoden overføres til ASP
med lidt kode.
>> Nå, tid at skrubbe i seng.
>
> Ja, det er måske lidt af problemet Sov godt og tak for dine inputs
Jeg lærte i hvert fald en del her..
;)
MVH
Rune Jensen
| |
Kim Emax (21-09-2009)
| Kommentar Fra : Kim Emax |
Dato : 21-09-09 14:23 |
|
On Sep 21, 5:00 pm, Birger Sørensen <s...@bbsorensen.com> wrote:
> Nej. Det er en HTML fejl :
> fra http://www.w3.org/TR/html401/types.html#type-cdata
> "ID and NAME tokens must begin with a letter ([A-Za-z]) and may be
> followed by any number of letters, digits ([0-9]), hyphens ("-"),
> underscores ("_"), colons (":"), and periods (".")."
> Altså [ og ] er ikke lovlige karakterer i hverken id eller name
> attributten.
Jeg tror du læser det der forkert. En variabel må hedde test men ikke
te]st. test[] er et array, der hedder test.
--
Mvh
Kim Emax
| |
Kim Emax (21-09-2009)
| Kommentar Fra : Kim Emax |
Dato : 21-09-09 14:57 |
|
On Sep 21, 9:51 pm, Rune Jensen <runeofdenm...@gmail.com> wrote:
> Det ser jeg frem til. Jeg kan nok ikke hjælpe så meget med selve
> javascriptet, men dit problem interesserer mig, for jeg har selv haft
> problemer med checkboxe-collections og iøvrigt også arrays i JS. Det kan
> være, det er ved at løse sig med en løsning på dit problem. Så jeg
> følger lige lidt med her.
Jamen så kan det være du kan bruge denne url, for det er løst nu
http://emax.dk/javascript/toggleCheckboxes.php
Den kan evt. udbygges med et ekstra parameter til funktionen (true/
false), så man kan afgøre om alle skal checked/uncheckes
--
Mvh
Kim Emax
| |
Rune Jensen (22-09-2009)
| Kommentar Fra : Rune Jensen |
Dato : 22-09-09 19:04 |
|
Kim Emax skrev:
> On Sep 21, 9:51 pm, Rune Jensen <runeofdenm...@gmail.com> wrote:
>
>> Det ser jeg frem til. Jeg kan nok ikke hjælpe så meget med selve
>> javascriptet, men dit problem interesserer mig, for jeg har selv haft
>> problemer med checkboxe-collections og iøvrigt også arrays i JS. Det kan
>> være, det er ved at løse sig med en løsning på dit problem. Så jeg
>> følger lige lidt med her.
>
> Jamen så kan det være du kan bruge denne url, for det er løst nu
>
> http://emax.dk/javascript/toggleCheckboxes.php
>
> Den kan evt. udbygges med et ekstra parameter til funktionen (true/
> false), så man kan afgøre om alle skal checked/uncheckes
Bortset fra, den jeg skal bruge lige pt., skal have getElementsByTagName
i stedet, men det er jo stadig en collection, og ikke det, som er
problemet (lige nu), der er det mere, om den virker i alle browsere..
Den jeg har, virker ikke i alle browsere, nemlig, hvilket irriterer mig
lidt.
Men jeg kigger på din kode, så.
MVH
Rune Jensen
| |
Kim Emax (21-09-2009)
| Kommentar Fra : Kim Emax |
Dato : 21-09-09 14:59 |
|
Hej Birger
On Sep 21, 8:21 pm, Birger Sørensen <s...@bbsorensen.com> wrote:
> 8X
8x?
> Giv alle checkboxene samme navn, og formen et id.
>
> my_form = document.getElementById( 'myform');
> boxes = my_form.getElementsByName( 'list');
> for ( idx = 0; idx < boxes.count; idx++) {
> boxes[ idx].checked = 'checked';
> }
Jeg brugte ikke dit eksempel, men det løste mit problem med en løsning
jeg havde fundet, der var fyldt med fejl, så tak for hjælpen. Se min
posting andetsteds i tråden for løsningen.
--
Mvh
Kim Emax
| |
Birger Sørensen (21-09-2009)
| Kommentar Fra : Birger Sørensen |
Dato : 21-09-09 22:20 |
|
Efter mange tanker skrev Kim Emax:
> Hej Birger
>
> On Sep 21, 8:21 pm, Birger Sørensen <s...@bbsorensen.com> wrote:
>
>> 8X
>
> 8x?
>
>> Giv alle checkboxene samme navn, og formen et id.
>>
>> my_form = document.getElementById( 'myform');
>> boxes = my_form.getElementsByName( 'list');
>> for ( idx = 0; idx < boxes.count; idx++) {
>> boxes[ idx].checked = 'checked';
>> }
>
> Jeg brugte ikke dit eksempel, men det løste mit problem med en løsning
> jeg havde fundet, der var fyldt med fejl, så tak for hjælpen. Se min
> posting andetsteds i tråden for løsningen.
8X = saks
Birger
--
http://varmeretter.dk - billig, sund og hurtig mad
http://bbsorensen.dk
| |
Kim Emax (22-09-2009)
| Kommentar Fra : Kim Emax |
Dato : 22-09-09 01:36 |
|
On 21 Sep., 23:20, Birger Sørensen <s...@bbsorensen.com> wrote:
> >> Giv alle checkboxene samme navn, og formen et id.
> > Jeg brugte ikke dit eksempel, men det løste mit problem med en løsning
> > jeg havde fundet, der var fyldt med fejl, så tak for hjælpen. Se min
> > posting andetsteds i tråden for løsningen.
Lige for at uddybe, det var ovenstående du skrev, der hjalp mig til at
løse fejlene i den anden løsning
> 8X = saks
>
ahhh
? nej, nu stopper vi
--
Mvh
Kim Emax
| |
|
|