Antje Hofmann: formular - hidden/visible

Beitrag lesen

Hallo Rainer,

in diesem Thread wurde vieles gesagt, aber relativ wenig auf dein Problem bezogen. Sehen wir zu, dass da Ordnung rein kommt:

Eine ganze Menge Probleme hast du:

Im InternetExplorer ganz leicht (am Ende Quelltext).
Leider versteht Netscape die display - Anweisung nicht...

Das versteht NN schon. Allerdings kann eine Displayanweisung im nachhinnein nicht geändert werden.

<SCRIPT language=JavaScript type=text/javascript>

Achte bitte auf korrekte "" um die Attribute. Hier rächt sich ganz schnell jede Nachlässigkeit

function Visual()
{
if(document.all) // IE 4
{
if(document.all.auswahl.selectedIndex == 3)
{
  document.all.feld1.style.display="inline";
}
else
{document.all.feld1.style.display="none";
}
}

if (document.layers) //Ns
{
document.layers[feld1].visibility = "show" ;

So wie du hier feld1 schreibst, wird feld1 als Variable angesehen.
Richtig

document.layers["feld1"].visibility = "hide";

<select name="auswahl" onClick="javascript:Visual()">

NN kennt keinen Eventhandler onclick in Auswahllisten. Dein Freund ist onchange="Visual()"

Die Notation: onclick="javascript:" ist falsch. Ein Eventhandler ist bereits JavaScript. Einige Browser reagieren mit Fehlermeldungen auf solch einen Aufruf.

<DIV id=feld1 style="LEFT: 170px; POSITION: absolute; TOP: 15px; display:none">

wie bereits gesagt: visibility ist die richtige Angabe. du mußt diesbezüglich dein Script im IE ändern.

Name:<input type='text' value='' name='Name'></DIV>
</form>

Trotzdem wird dein Bemühen nicht von Erfolg gekrönt sein. Der NN 4zeigt zwar das Wort Name an, aber nicht das Inputfeld.
Der Grund:

Ein Layer bzw. ein absolute positionierter Div werden im NN 4 als eigene Dokumente angesehen.
Das heißt übersetzt:
Dein Feld Name ist im NN 4 kein Bestandteil des Formulares form1. Es ist für ihn ein einzelstehendes Formularfeld. Da diese nicht von einem Formtag eingeschlossen wird, zeigt er es auch nicht an.

Eine Möglichkeit wäre, die Datei so aufzubauen:

<form name="form1" method="post" action="">
  <select name="auswahl" onchange="Visual()">
    <option selected>Welt</option>
    <option>Europa</option>
    <option>Land</option>
    <option>Personenname</option>
  </select>

</form>
<div id="feld1" style="left:170px;position:absolute;top:15px; visibility:hidden;">
<form name="form2" method="post" action=""> Name:<input type="text" value="" name="Name"></form></div>

Du mußt dann nur jeweils den Inhalt des Formelementes in das Hauptformular übertragen.

Viele Grüße

Antje