Du bist nicht angemeldet.

Lieber Besucher, herzlich willkommen bei: WebStyleBoard. Falls dies dein erster Besuch auf dieser Seite ist, lies bitte die Hilfe durch. Dort wird dir die Bedienung dieser Seite näher erläutert. Darüber hinaus solltest du dich registrieren, um alle Funktionen dieser Seite nutzen zu können. Benutze das Registrierungsformular, um dich zu registrieren oder informiere dich ausführlich über den Registrierungsvorgang. Falls du dich bereits zu einem früheren Zeitpunkt registriert hast, kannst du dich hier anmelden.

1

Mittwoch, 1. März 2006, 09:45

AutoFocus im Eingabefeld

Werte JSler,

Ihr kennt mit Sicherheit das kleine Gimmick, dass der Focus automatisch auf ein Eingabefeld springt, wenn eine Seite aufgerufen wird. Das ist z.B. bei Google der Fall.

Das Ganze wird durch ein winziges JS-Script erledigt:

Quellcode

1
2
3
4
5
<script type="text/javascript">
<!--
function autoFocus(){document.login_form.usr_nick.focus();}
// -->
</script>


Aufgerufen wird das Script via onLoad im Body-Tag.

Das Problem dabei: Es funktioniert nur, wenn ich "login_form" als Name des Formulares verwende. Dann ist das Dokument allerdings nicht mehr valide...

Daher habe ich gedacht, verwende ich "login_form" als ID des Formulares, nur dann funktioniert das Ganze nicht... Oder was muss ich ändern, um das Formular auch über die ID anzusprechen?

Danke im Voraus!

LapisInfernalis
Signatur von »LapisInfernalis« Eine Milde Gabe...

Der Horizont vieler Menschen ist ein Kreis mit dem Radius Null - und das nennen sie ihren Standpunkt.

Albert Einstein (1879-1955)

A common mistake people make when trying to design something completely foolproof is to underestimate the ingenuity of complete fools.
Douglas Adams (1952-2001)

2

Donnerstag, 2. März 2006, 20:50

RE: AutoFocus im Eingabefeld

Hi.

Versuch mal:

Quellcode

1
2
3
4
5
6
7
<script type="text/javascript">
<!--
function autoFocus(){
document.getElementsById('login_form').usr_nick.focus();
}
// -->
</script>


MfG MaMo

3

Donnerstag, 2. März 2006, 21:17

Nope... An getElementById habe ich auch schon gedacht, klappt aber leider nicht...

Aber dennoch many thanks... ;)
Signatur von »LapisInfernalis« Eine Milde Gabe...

Der Horizont vieler Menschen ist ein Kreis mit dem Radius Null - und das nennen sie ihren Standpunkt.

Albert Einstein (1879-1955)

A common mistake people make when trying to design something completely foolproof is to underestimate the ingenuity of complete fools.
Douglas Adams (1952-2001)

4

Donnerstag, 2. März 2006, 23:11

Hi,
würde schon klappen - nur gibt's getElementsById nicht und usr_nick ist kein Unterobjekt. Formularelemente können über:
document.Formularname.Elementname.Eigenschaft
nur angesprochen werden, wenn das name-Attribut verwendet wird, ansonsten über:
document.forms[#].elements[#].Eigenschaft
- wobei die form-Nummer durch die ID und die elements-Nummer durch den Elementnamen ersetzt werden kann.
Gruß
Ingo

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Ingo« (2. März 2006, 23:12)


5

Freitag, 3. März 2006, 08:13

Danke für den Hinweis, Ingo, aber Deine Lösung funktioniert leider auch nicht... Im FF tut sich gar nichts und der IE informiert mich darüber, dass document.forms[...].elements Null oder kein Objekt sei... :surprised:
Signatur von »LapisInfernalis« Eine Milde Gabe...

Der Horizont vieler Menschen ist ein Kreis mit dem Radius Null - und das nennen sie ihren Standpunkt.

Albert Einstein (1879-1955)

A common mistake people make when trying to design something completely foolproof is to underestimate the ingenuity of complete fools.
Douglas Adams (1952-2001)

6

Freitag, 3. März 2006, 11:20

Hi,
dann hast Du vermutlich einen Fehler gemacht.
Unter der Voraussetzung, daß Dein Formular die ID "login_form" und das Eingabefeld den Namen "usr_nick" hat, sollte:
document.getElementById('login_form').elements['usr_nick'].focus()
eigentlich funktionieren.
Gruß
Ingo

7

Samstag, 4. März 2006, 12:37

hi ho,

per id kannst du nicht auf die attribute wie value etc der formularfelder zugreifen.

das geht nur per document.formname.formelement.focus()

oder auch per

document.getElementsByName('DeinName')[0].focus();

die function getElementsByName gibt dir einen Array zurück mit Elementen die diesen Namen besitzen. In deinem Fall greifst du vermutlich auf das Element 0 (deswegen [0]) zurück und setzt dann noch einen Fokus :)

tobias
Signatur von »t-ob-i« {SIGNATUR}

8

Samstag, 4. März 2006, 12:40

Das klingt einleuchtend... Nur nützt mir der Name als solcher eigentlich nichts. Denn verwende ich diesen, so kann ich auch bei meiner eingangs gezeigten, simplen Lösung bleiben...

Allerdings darf aus mir unverständlichen Gründen laut XHTML Strict-DTD das Formular keinen Namen tragen... :disappointed:
Signatur von »LapisInfernalis« Eine Milde Gabe...

Der Horizont vieler Menschen ist ein Kreis mit dem Radius Null - und das nennen sie ihren Standpunkt.

Albert Einstein (1879-1955)

A common mistake people make when trying to design something completely foolproof is to underestimate the ingenuity of complete fools.
Douglas Adams (1952-2001)

9

Samstag, 4. März 2006, 14:27

mh.. du willst immer dem ersten formularelement den focus geben?

dann mach doch

document.f[0][0].focus();

ohne namensvergabe kannst du auch per int-wert auf ein formular zugreifen. die reihenfolge ist genau wie die reihenfolge im html dokument beginnent mit null.

eventuell solltest du eine schleife bauen die hidden-fields überspringt..

tobias
Signatur von »t-ob-i« {SIGNATUR}

10

Samstag, 4. März 2006, 15:15

Hi,

Zitat von »t-ob-i«


per id kannst du nicht auf die attribute wie value etc der formularfelder zugreifen.

das geht nur per document.formname.formelement.focus()

das ist Unsinn, sorry. Außerdem geht es hier nicht um value, sondern focus().

In welchen Browsern soll das denn nicht funktionieren, außer in den uralten, die document.getElementById noch nicht kennen?

Du kannst ein Element auf verschiedene Arten ansprechen - je nach Fähigkeiten der Browser. Und Du kannst diesem Element natürlich unabhängig von der Referenzierung focus() zuweisen. Ich weiß wirklich nicht, wie Du auf sowas kommst...

Unter den beschriebenen Voraussetzungen funktioniert sowohl:

document.getElementById('login_form').elements['usr_nick'].focus()

als auch - sofern das input-Feld selbst eine ID 'usr_nick' besitzt:

document.getElementById('usr_nick').focus()

Gruß
Ingo


P.S.: gerade mal ausprobiert - sebst:

document.getElementById('login_form').elements['usr_nick'].value="neuerWert"

funktioniert - warum auch nicht? :confused:

Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von »Ingo« (4. März 2006, 15:23)


11

Samstag, 4. März 2006, 15:55

mh. das ist mir neu. aber trotzdem danke für den hinweis :)
Signatur von »t-ob-i« {SIGNATUR}