Herausfinden, welcher Feldtyp
Alexander Zeitler
- javascript
Hallo,
ich übergebe an ein Javascript folgende Parameter:
Formularname
Feldname
Wie kann ich nun prüfen, ob es sich bei dem
Feld um eine Checkbox oder einen Radiobutton handelt?
Das Problem ist, daß eine Checkbox keine .length-Angabe (undefined) zurückliefert
und im Gegenzug der Radiobutton, sofern er nicht über
den Index des Arrays angesprochen wird, keine .type-Angabe (undefined) zurückliefert.
Ob ich einen Index benötige weiß ich aber ja nicht, wenn
ich nicht weiß, ob es ein Radiobutton ist.
typeof Feldname liefert bei beiden (checkbox und radio) immer object zurück, damit scheint es also auch nicht herauszufinden zu sein.
Gibt es hierfür eine Lösung?
Gruss
Alex
Hallo,
ich übergebe an ein Javascript folgende Parameter:
Formularname
FeldnameWie kann ich nun prüfen, ob es sich bei dem
Feld um eine Checkbox oder einen Radiobutton handelt?Das Problem ist, daß eine Checkbox keine .length-Angabe (undefined) zurückliefert
und im Gegenzug der Radiobutton, sofern er nicht über
den Index des Arrays angesprochen wird, keine .type-Angabe (undefined) zurückliefert.
Ob ich einen Index benötige weiß ich aber ja nicht, wenn
ich nicht weiß, ob es ein Radiobutton ist.
Kann ich nicht nachvollziehen:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>Testcase</title>
<script type="text/javascript">
function test(f)
{
for(var i=0; f.elements[i];i++)
{
alert(f.elements[i].type);
}
}
</script>
</head>
<body>
<form>
<input type="checkbox" value="c1">
<br>
<input type="radio" value="r1">
<input type="radio" value="r1">
<input type="radio" value="r1">
<input type="radio" value="r1">
<input type="radio" value="r1">
<br>
<input type="button" value="*** test ****" onclick="test(this.form);">
</form>
</body>
</html>
Liefert alle Typen von allen Elementen.
Struppi.
Liefert alle Typen von allen Elementen.
ja, dieses Sample aus Selfhtml wandert automatisch durch alle Elemente und erkennt den Typ und reagiert dann entsprechend. Spreche ich ein Feld aber direkt über den Namen an, klappt das nicht mehr:
<input type="radio" name="radio" value="">
<input type="radio" name="radio" value="">
<script language="JavaScript">
<!--
{
alert(radio.type);
}
//-->
</script>
zwischenzeitlich prüfe ich einfach die .type-Information gegen "undefined", ist dies der Fall, gehe ich davon aus, daß
es ein Radio-Button ist.
Trotzdem danke für Deine Bemühungen.
Gruss
Alex
<input type="radio" name="radio" value="">
<input type="radio" name="radio" value="">
<script language="JavaScript">
<!--
{
alert(radio.type);
}
//-->
</script>zwischenzeitlich prüfe ich einfach die .type-Information gegen "undefined", ist dies der Fall, gehe ich davon aus, daß
es ein Radio-Button ist.
Das ist sowieso falsch!
radio.type muss undefined sein, woher soll der Browser Wissen, welches Element des dokumentes du meinst?
es muss heißen
document.FormularName.ElementeName
Die Lösung deines Problems ist:
<form>
<input type="radio" name="radio" value="">
<input type="radio" name="radio" value="">
</form>
<script type="text/javascript">
<!--
function _type(el)
{
if(typeof el.length != 'undefined') return el[0].type;
return el.type;
}
alert(_type(documnet.forms[0].radio));
}
//-->
</script>
Struppi.
radio.type muss undefined sein, woher soll der Browser Wissen, welches Element des dokumentes du meinst?
das sollte eigentlich nur die Problematik darstellen, aber es funktionierte weder mit document.formularname...... noch ohne.
Die Lösung deines Problems ist:
danke Dir.
Gruss
Alex