[php-javascript] array doorgeef probleem

Pagina: 1
Acties:
  • 41 views sinds 30-01-2008

  • HenkS
  • Registratie: Mei 2000
  • Laatst online: 21-08 09:04

HenkS

Da_king alias HenkS

Topicstarter
mm beetje vage titel, maar wist niks anders

wat is mijn probleem

ik heb een form met gebruikersnamen

achter iedere naam staat een checkbox en een textfield

ik bouw het form zo op:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
$sql =  "SELECT bewonerid, naam FROM bewoner WHERE ".
                "huisid = $HTTP_SESSION_VARS[huisid] and naam<>'admin'";
        $result = mysql_query($sql);
        $i=1;
        while ($row = mysql_fetch_row($result)){
          echo "<tr><td>";
          echo "$row[1]:";
          echo "</td><td>";
          echo "<INPUT TYPE=checkbox NAME=deelname[$row[0]] onclick=\"change($row[0]);\">";
          echo "</td><td>";
          echo "<INPUT TYPE=text NAME=percentage[$row[0]] value=0 size=5>";
          echo "</tr>";
          $i++;
        }


zoals jullie zien is de checkbox en het textveld een array... zo kan ik na de $_POST de gegevens makkelijker verwerken

maar wat wil ik nu:

als je op de checkbox klikt en het vinkje ='on' dan moet in het textfield wat erbij hoort (is wel een andere array) de waarde 100 worden, en is vinkje='of' dan moet het 0 worden

dus klik je op deelname[3] dan moet percentage[3] = 100 worden

alleen heb ik dus een onclick js functie waarbij ik in die geval dus '3' meegeef, maar ik krijg het met geen mogelijkheid veranderd

zou dus iets moeten zijn van

document.bill.percentage[id].value=100;

bill= formnaam

maar dit werkt dus niet.. en ik heb dus geen idee hoe wel...

  • Liqued
  • Registratie: Februari 2001
  • Laatst online: 09-01 18:51
laat eens ff je change() functie precies zien.

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 18:29

crisp

Devver

Pixelated

begin eens met in je HTML quotes om je attributen te zetten:
HTML:
1
2
<input type="checkbox" name="deelname[3]" onclick="change(3);" />
<input type="text" name="percentage[3]" value="0" size="5" />


en formelementen benader je in JS het beste via de forms-elements collectie:

JavaScript:
1
2
3
4
5
6
7
8
9
function change(num) {

  if (document.forms['bill'].elements['deelname['+num+']'].checked) {
    document.forms['bill'].elements['percentage['+num+']'].value = '100';
  } else {
    document.forms['bill'].elements['percentage['+num+']'].value = '0';
  }

}


basic HTML en JS (en hoort dus in /13 als het niet zo basic zou zijn)

[ Voor 5% gewijzigd door crisp op 05-08-2003 12:57 ]

Intentionally left blank


  • HenkS
  • Registratie: Mei 2000
  • Laatst online: 21-08 09:04

HenkS

Da_king alias HenkS

Topicstarter
nou eerst had ik geen array, maar bouwde ik het form zo op:

naam_$row[0]

dus kreeg je naam_3 , naam_5 enz..... dus id van user, nu wil ik dus array gebruiken


voorheen (en het werkte) zag mijn change functie er zo uit:

function change(id){

deelnamefield = "deelname_" + id;
percentagefield = "percentage_" + id;

if(eval("document.bill."+deelnamefield+".checked") == true){
eval("document.bill."+percentagefield+".value=100");
}else{
eval("document.bill."+percentagefield+".value=0");
}
}


dat was dus voorheen

tja en nu weet ik t dus gewoon echt niet..

heb dus geprobeerd :

document.bill.percentage[id].value=100;
en wat varianten daarop, maar heb geen idee hoe dit goed te laten werken...

  • justmental
  • Registratie: April 2000
  • Niet online

justmental

my heart, the beat

Het probleem zit blijkbaar in de Javascript, dus is het beter op z'n plaats bij onze vrienden van W&G.

Who is John Galt?


  • crisp
  • Registratie: Februari 2000
  • Laatst online: 18:29

crisp

Devver

Pixelated

en hier gaat hij dus dicht; zie mijn eerdere reply ;)

HenkS: eval is in bijna 100% van de gevallen overbodig, dus is het wel een erg ranzige manier om dit soort dingen op te lossen :)

Intentionally left blank

Pagina: 1

Dit topic is gesloten.