Toon posts:

[JS] Waarde formElement is array; hoe opvragen?

Pagina: 1
Acties:

Verwijderd

Topicstarter
PHP:
1
2
3
4
5
<script language="JavaScript" type="text/javascript">
    function administrator(){
        alert( document.myForm.roles.value.length );
    }
</script>


document.myForm.roles.value is een array, als ik alert( document.myForm.roles.value) doe toont hij ook netjes Array.
document.myForm.roles.value.length = 5
document.myForm.roles.value[0] geeft undefined! :?

how come?

  • Limhes
  • Registratie: Oktober 2001
  • Laatst online: 19-08 19:06
En wat doet document.myForm.roles.value.item(0); ?

  • Clay
  • Registratie: Oktober 1999
  • Laatst online: 22-06 13:51

Clay

cookie erbij?

als roles een textinput is, is value een string, daarvan kan de length best 5 zijn, maar [0] is er dan niet nee.

Instagram | Flickr | "Let my music become battle cries" - Frédéric Chopin


  • Limhes
  • Registratie: Oktober 2001
  • Laatst online: 19-08 19:06
Clay schreef op 05 november 2003 @ 13:41:
als roles een textinput is, is value een string, daarvan kan de length best 5 zijn, maar [0] is er dan niet nee.
Dan zal ie toch niet 'Array' alerten :?

Verwijderd

Topicstarter
document.myForm.roles.value.item(0);
een error popup met deze actie wordt niet ondersteund door dit object

clay -> waarom geeft hij dan wel Array in de popup als ik alert(document.myForm.roles.value) doe?
volgens mij snapt hij wel dat het een array is.

Verwijderd

kan het zijn dat het een 'named' index is? oftewel: array["nr1"], array["nr2"], ... geef anders eens de code/formulier waaruit je die array ophaalt...

  • McVirusS
  • Registratie: Januari 2000
  • Laatst online: 10:46
Hoe kan de waarde van een form element een array zijn? Je zal toch echt wat meer code laten zien.

Een nettere manier om een form element aan te spreken is overigens document.forms['formnaam'].elements['naamvanelement'].

  • Clay
  • Registratie: Oktober 1999
  • Laatst online: 22-06 13:51

Clay

cookie erbij?

<input type="text" value="Array" />

value: Array
length: 5

Als je een array object alert krijg je [waarde, waarde, waarde] te zien. Daarom de vraag; wat voor type input is roles? een text? multiple select? :)

Instagram | Flickr | "Let my music become battle cries" - Frédéric Chopin


Verwijderd

Topicstarter
PHP:
1
2
<?= print_r( $rolearray ); ?>
<input type="hidden" name="roles" value="<?= $rolearray; ?>">

print levert: Array ( [0] => 1 [1] => 12 [2] => 4 [3] => 9 ) 1

dit is toch een legale move?

Verwijderd

in value zal nu idd komen te staan wat Clay al beweert :)

Je kan het eventueel oplossen door in een lusje je $rolearray uit te lezen en voor elke waarde een input aan te maken...

Dus krijg je als HTML output

<input type="hidden" name="roles[]" value="1" />
<input type="hidden" name="roles[]" value="12" />
<input type="hidden" name="roles[]" value="4" />
<input type="hidden" name="roles[]" value="9" />

Verwijderd

Topicstarter
in value zal nu idd komen te staan wat Clay al beweert
omg en ook nu pas gaat het lichtje branden }:O
doh doh doh

Verwijderd

Topicstarter
okee het werkt nu ...... bijna :D

PHP:
1
2
3
4
5
6
7
8
function administrator(){
    if( document.forms['myForm'].elements[1].checked=true ){
        userroles = document.forms['myForm'].elements['roles[]'];
        for ( $i=0 ; $i < userroles.length ; $i++){
            document.forms['myForm'].elements[ userroles[$i].value ].checked=true;
        }
    }
}

als ik nu checkbox 1 aanvink wordt automagisch de rest ook aangevinkt.
kleine bijkomstigheid... ik kan checkbox 1 niet meer unchecken?!

code:
1
2
<td class="bold" width="150">Administrator</td> 
<td ALIGN="left" width="15"><input type="checkbox" name="1"  onclick="administrator();"></td>


how is that possible?

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

ik zou het zo doen:

JavaScript:
1
2
3
4
5
6
7
function administrator(aan_uit){ 

  var userroles = document.forms['myForm'].elements['roles[]']; 
  var i = userroles.length;
  while (--i) userroles[i].checked = aan_uit;

}


HTML:
1
<input type="checkbox" onclick="administrator(this.checked);" />


oh ja, een name attribuut mag niet met een cijfer beginnen ;)

[ Voor 15% gewijzigd door crisp op 05-11-2003 16:19 ]

Intentionally left blank

Pagina: 1