opener und Formularfeld über Namen ändern. Geht nicht immer.

francosdad

Mitglied
Hallo,

ich habe folgendes Problem.

Es wird ein Formular dynamisch erzeugt, wie der folgende Quelltext:

HTML:
<form name="additem">
Kategorie 1: <input type="text" name="category0" value="" onclick="fenster('categories.php', 'category0')">
Kategorie 2: <input type="text" name="category1" value="" onclick="fenster('categories.php', 'category1')">
Kategorie 2: <input type="text" name="category2" value="" onclick="fenster('categories.php', 'category2')">

Das Javascript für die fenster Funktion:
Code:
<script type=\"text/javascript\">
	<!--
		function fenster(url, windowname) {
			var neu=window.open(url,windowname,'width=400, status=yes');
 			}
	//-->
</script>

Ich übergebe also den Namen des Inputfeldes als Fensternamen an das neu öffenende Fenster, um diesen Fensternamen im neuen Fenster wieder als Variable aufzugreifen; da jedes Kategoriefeld einzeln angesprochen werden soll.

Der Quelltext des neuen Fensters lautet wie folgt:
HTML:
<a href="javascript:insertcategorie(96693); window.close()" >16:9-Format - &uuml;bernehmen.</a>
<br />
<a href="javascript:insertcategorie(96691); window.close()" >1:1-Format - &uuml;bernehmen.</a>
<br />

Das Javascriptcode lautet wie folgt:
Code:
<script type="text/javascript">
	<!--
		function insertcategorie(cat) {
			var catname=name;
			opener.document.additem.category0.value=cat;
		}
//-->
</script>

Wenn das Formular jetzt nur aus einem Inputfeld category0 besteht, wird über opener die Variable an das Inputfeld im Ursprungsfenster zurückgegeben.

Wenn jedoch das Formular wie oben aus mehreren Inputfeldern mit durchnummerierten Namen besteht, dann kann ich "category0" nicht ansprechen.

Ich verstehe das nur nicht, da die Namen ja eindeutig sind.

Kann mir ja jemand helfen?

Mein Ziel ist es im Prinzip für jedes Inputfeld das selbe Kategoriefenster zu nutzen und die Auswahl immer an das aufrufende Inputfeld zu übergeben.

Danke im Voraus und beste Grüße aus Leipzig.
Michael
 
Hi,

Wenn jedoch das Formular wie oben aus mehreren Inputfeldern mit durchnummerierten Namen besteht, dann kann ich "category0" nicht ansprechen.

Doch, nur schreibst Du die Auswahl immer in das Feld category0, egal, aus welchem Feld das Fenster aufgerufen wurde. Da auch in dem Fenster ein PHP-Skript geladen wird, könntest Du im onclick-Handler den Feldnamen als GET-Parameter anhängen und categories.php das Javascript entsprechend generieren lassen.

LG
 
Hallo,

das ist so nicht ganz richtig.
Ich habe normalerweise eine Variable an der Stelle von "category0" im Javascript.

Da dies nicht funktionierte, habe ich eben "category0" hardgecoded und spreche eben immer das Feld "category0" an; egal aus wieviel Inputfeldern das Formular besteht.

Und genau hier liegt ja auch das Problem. Normalerweise gibt es nur ein Feld mit dem Namen "category0", egal ob das Formular mehrere Inputfelder enthält, aber sobald es mehrere enthält funktioniert das Script nicht mehr.

Mir scheint so, als könnte er die Zahl hinter dem Namen nicht interpretieren und sieht immer nur "category", dadurch weiß er bei mehreren feldern nicht welches er ansprechen soll.

Ich bin auch gerne für einen alternativen Ansatz bereit, jedoch bin ich ein Javascript Newbie.

Danke und regnerische Grüße aus Leipzig
Michael
 
Hi,

da du dem PopUp-Fenster einen Namen zuweist, solltest du diesen auch über window.name und damit den Textfeldname ansprechen können.

Versuch es mal mit folgender JS-Funktion:
Code:
function insertcategorie(cat) {
  opener.document.additem.elements[window.name].value=cat;
}

Ciao
Quaese
 
Hallo,

genau das gleiche Problem.

Wenn nur ein Inputfeld da ist, gehts; sobald zwei oder mehr durchnummerierte Inputfelder erscheinen gehts nicht mehr.

Es ist zum verrückt werden.

Grüsse
Michael
 
Hi,

mit folgenden Dokumenten funktioniert es bei mir.

Opener:
Code:
<html>
<head>
<title>www.tutorials.de</title>
<meta name="author" content="Quaese">
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
<script type="text/javascript">
  <!--
function fenster(url, windowname) {
  var neu=window.open(url, windowname);
}
 //-->
</script>
</head>
<body>
<form name="additem">
  Kategorie 1: <input type="text" name="category0" value="" onclick="fenster('categories.php', 'category0')">
  Kategorie 2: <input type="text" name="category1" value="" onclick="fenster('categories.php', 'category1')">
  Kategorie 2: <input type="text" name="category2" value="" onclick="fenster('categories.php', 'category2')">
</form>
</body>
</html>

categories.php:
Code:
<html>
<head>
<title>www.tutorials.de</title>
<meta name="author" content="Quaese">
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
<script type="text/javascript">
  <!--
function insertcategorie(cat) {
  opener.document.additem.elements[window.name].value=cat;
}
 //-->
</script>
</head>
<body>
<a href="javascript:insertcategorie(96693); window.close()" >16:9-Format - &uuml;bernehmen.</a>
<br />
<a href="javascript:insertcategorie(96691); window.close()" >1:1-Format - &uuml;bernehmen.</a>
<br />
</body>
</html>

Beachte auch das elements-Objekt in insertcategorie.

Ciao
Quaese
 
Hallo,

ich habe es jetzt so gemacht wie Du mit zwei Behelfsdateien und da ging es auch.

Danke, denn dadurch konnte ich den Fehler finden, welcher war:

Ich habe das Form-Tag mit dem Namen "additem" mit in der Formularschleife gehabt, dadurch kam dieses Tag mehrfach vor und er konnte es nicht mehr richtig zuordnen.

Das war auch der Grund warum es bei einem Eintrag funktionierte und bei mehreren nicht.

Der Fehler sah so aus:

HTML:
<form name="additem">
  Kategorie 1: <input type="text" name="category0" value="" onclick="fenster('categories.php', 'category0')">
</form>
<form name="additem">
  Kategorie 2: <input type="text" name="category1" value="" onclick="fenster('categories.php', 'category1')">
</form>
<form name="additem">
  Kategorie 2: <input type="text" name="category2" value="" onclick="fenster('categories.php', 'category2')">
</form>

Mir ist das nicht aufgefallen, da ich den Quelltext stark gekürzt habe.

Ich bedanke mich und viele Grüße
Michael
 

Neue Beiträge

Zurück