Toon posts:

[JS] Type opvragen van input element

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hallo,

ik krijg (of zet) de naam van een element uit een form
en daar wil ik de waarde uit hebben. Voor text velden geen probleem,
alleen bij radiobuttons gaat het mis.

Nu heb ik het volgende stukje code snel in elkaar geflansts:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<form name="myForm" onsubmit="return getType()">
<input type="radio" name="blaat" value="1">
<input type="radio" name="blaat" value="2">

<input type="text" name="adsf" value="2">
<input type="submit" value="do iets">
</form>

<script type="text/javascript">
function getType() {
  alert(document.forms['myForm'].elements['blaat'][0].type);
  alert(document.forms['myForm'].elements['adsf'][0].type);
  
  if (document.forms['myForm'].elements['blaat'].type == 'undefined')
    alert('undefined');
  return false;
}
</script>


Nu het probleem:
Ik weet niet (weet het wel, maar leg het niet vast in de code) welke type een element is. Ik haal dus het element op aan de hand van zijn naam en daar wil ik het type van weten.
Ik wil een zo simple mogelijke constructie.
Wat ik nu heb is dat ik zonder de [0] erachter undefined mee krijg, maar die in niet undefined in de if.
Als ik er wel [0] achter zet, dan krijg ik terug dat het een radio type is, maar dat werk niet bij tekst velden.
Hoe krijg ik het voor elkaar om snel het type van een element te krijgen?

[ Voor 14% gewijzigd door Verwijderd op 05-10-2004 17:28 ]


  • crisp
  • Registratie: Februari 2000
  • Laatst online: 00:47

crisp

Devver

Pixelated

Check eerst eens op de length property ;)

Intentionally left blank


  • André
  • Registratie: Maart 2002
  • Laatst online: 18-05 16:30

André

Analytics dude

crisp schreef op 05 oktober 2004 @ 17:38:
Check eerst eens op de length property ;)
Dat is niet fool-proof, wat als tekstvelden nou zo genoemd zijn: blaat[0], blaat[1]?

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
André schreef op 05 oktober 2004 @ 17:40:
[...]

Dat is niet fool-proof, wat als tekstvelden nou zo genoemd zijn: blaat[0], blaat[1]?
Dan gebruik je isArray :Y)
JavaScript:
1
2
3
function isArray(obj) {
   return (obj.constructor.toString().indexOf("Array") != -1)
}

;)

[ Voor 10% gewijzigd door RobIII op 05-10-2004 17:41 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • André
  • Registratie: Maart 2002
  • Laatst online: 18-05 16:30

André

Analytics dude

RobIII schreef op 05 oktober 2004 @ 17:41:
[...]

Dan gebruik je isArray :Y)
JavaScript:
1
2
3
function isArray(obj) {
   return (obj.constructor.toString().indexOf("Array") != -1)
}

;)
In beide gevallen zijn het arrays :)

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 00:47

crisp

Devver

Pixelated

HTML:
1
<input type="text" name="blaat[0]" />

JavaScript:
1
2
3
alert(document.forms['myForm'].elements['blaat'][0]); // dikke foutmelding hoor
alert(document.forms['myForm'].elements['blaat[0]']); // ja, die bestaat wel
alert(document.forms['myForm'].elements['blaat[0]'].length); // maar length is 'undefined'

[ Voor 35% gewijzigd door crisp op 05-10-2004 17:46 ]

Intentionally left blank


  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
André schreef op 05 oktober 2004 @ 17:43:
[...]

In beide gevallen zijn het arrays :)
|:( * RobIII is niet goed wakker vandaag
Excuus voor de bijdehante post van daarnet ;)

Overigens gebruik ik altijd prefixes voor mijn inputvelden zoals "txtName" of "optSexe" waaraan je kunt zien wat het is. Nu komt dat waarschijnlijk door mijn verleden dat ik die prefixes zo stug aanhou, maar ik ben jou probleem dan ook nog nooit tegen gekomen hierdoor, dus heb ik er (ongemerkt) altijd profijt van gehad :)

(Ik bedoel dus dat ik gewoon naar de eerste 3 letters kijk wat het is in jouw geval ;) )

[ Voor 53% gewijzigd door RobIII op 05-10-2004 17:50 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Verwijderd

Topicstarter
crisp schreef op 05 oktober 2004 @ 17:38:
Check eerst eens op de length property ;)
Harstikke bedankt, dat was het!

Verwijderd

Topicstarter
Het werkte dus.... maar niet goed

Want bij een dropdown (select-one) is de length ook groter dan 0, maar die moet je niet al array aanspreken.

Maar waarom werkt dit dan niet:
if (document.forms['myForm'].elements['blaat'].type == 'undefined')
alert('undefined');

als blaat een radiobutton is die 2x voor komt.

  • André
  • Registratie: Maart 2002
  • Laatst online: 18-05 16:30

André

Analytics dude

Verwijderd schreef op 05 oktober 2004 @ 22:34:
Het werkte dus.... maar niet goed

Want bij een dropdown (select-one) is de length ook groter dan 0, maar die moet je niet al array aanspreken.

Maar waarom werkt dit dan niet:
if (document.forms['myForm'].elements['blaat'].type == 'undefined')
alert('undefined');

als blaat een radiobutton is die 2x voor komt.
Omdat je per element of radiogroup in een form unieke namen moet hebben :)

[ Voor 7% gewijzigd door André op 06-10-2004 00:26 ]


  • djluc
  • Registratie: Oktober 2002
  • Laatst online: 21-05 14:56
Misschien handig om te weten: als je met Mozilla je script runt en je de JavaScript debugger gebruikt kan je vaak heel eenvoudig alle beschikbare gegevens vinden. Dit is er handig als je niet precies weet hoe je iets moet benaderen.
Pagina: 1