TP Underground Lounge 07/08
-


Hinweise


Antwort
 
LinkBack Themen-Optionen Thema durchsuchen Thema bewerten
Alt 25.01.2006, 18:42   #1
TP-Specialist
 
Benutzerbild von theo
 
Registriert seit: Apr 2002
Ort: 743, evergreen terrace
theo macht sich hier sehr viel Mühe

array nur im ff


moinsen gemeinde!

ich geb nach langem probieren auf. ueber eine funktion lasse ich in einem formular ein inputfeld type "file" aufbauen. wird dieses feld gefuellt, so wird ein neues feld gleichen typs aufgebaut.
soweit so gut. die namen aller input-felder sind identisch. ff behandelt die uebergabe daher als array und ich kann es problemlos ansprechen und auslesen. ie irgnoriert die felder voellig.
nachdem ich mit document.forms[0].files.length die anzahl der schluessel ausgeben lassen wollte und der ie mir als antwort "files habe keine eigenschaften" ausgespuckt hat, habe ich die sache als string behandeln wollen. doch auch der direkte zugriff per document.forms[0].files.value hatte das gleiche ergebnis.
nu bin ich ratlos. ich brauche dringend ein array und was noch schlimmer ist: es MUSS im ie funzen.
kann mir jemand einen tip geben?

danke,
hardy

ps: hier noch die funtion ...
Code:
function insert_file_input(divname) {
  if (document.getElementById(divname) != null) {
    var fx = document.getElementById(divname);
    
    var inp = document.createElement("input");
    inp.size = 60;
    inp.maxlength = 80;
    inp.className = "submit";  
    inp.type = 'file';
    inp.name = 'files';  // wieder automatisch ein array (im ff); ie kann damit nicht um
    inp.id   = 'fileId'+filecount;
    inp.onchange = function() {showImage(this.id);};
    inp.ondblclick = function() {showImage(this.id);};
    
    var img 	= document.createElement("img"); 
    img.src 	= '../images/admin/preview.gif';
    img.width	= 25;
    img.height		= 20;
    img.style.cursor	= 'pointer';
    img.style.cursor	= 'hand';
    img.title		= 'Vorschau';
    img.alt		= img.title;
    img.name		= 'fileId'+filecount;	  
    img.onclick 	= function() {showImage(this.name);};
    
    var br = document.createElement("br");
    
    // kontrolle, ob bildname bereits vorhanden ist
    // string mit allen bereits hochgeladenen bildern holen und per match() test laufen lassen
  
    fx.appendChild(img);
    fx.appendChild(inp);
    fx.appendChild(br);
    filecount++;
  }
}
theo ist offline   Mit Zitat antworten


Alt 25.01.2006, 20:12   #2
TP-Moderator
 
Benutzerbild von Malleus
 
Registriert seit: Aug 2004
Ort: Homburg / Saarland
Malleus ist ein richtiges Arbeitstier - DANKEMalleus ist ein richtiges Arbeitstier - DANKEMalleus ist ein richtiges Arbeitstier - DANKEMalleus ist ein richtiges Arbeitstier - DANKE
Hi Hardy,
brauchst Du das Array im Javascript oder auf Serverseite? Wenn's innerhalb PHP ist, probier' doch mal als Namen "files[]". Das ist zwar nicht W3C-konform, aber wenn's Dir hilft.

Tschau
Frank

P.S. Warum bzw. wann brauchst Du das Array?
Malleus ist offline   Mit Zitat antworten
Alt 25.01.2006, 20:31   #3
TP-Specialist
 
Benutzerbild von theo
 
Registriert seit: Apr 2002
Ort: 743, evergreen terrace
theo macht sich hier sehr viel Mühe
hi frank,

ich brauche es vorerst lokal. ich kann immer wieder in die vorschau wechseln und mir die aktuell eingetragenen files anschauen. also erstmal nix server. die sachen gehen spaeter alle zusammen ans php und auf den server bzw. in die db. aber eben erst, wenn alle angaben vollstaendig sind.
es muss also innerhalb des js ne loesung sein.
das array selbst brauche ich, weil ich in dem array bildnamen habe. die muss ich mit auf dem server vorhandenen dateien vergleichen, um ein ueberschreiben zu vermeiden. da soll also dann noch vor der uebergabe an den server noch ein warnhinweis bei bereits vorhandenen namen erscheinen.
array macht sich in meinen augen auch am besten, weil ich die anzahl der uebergebenen inputfelder nicht feststeht und permanent variabel ist.

gruss
hardy
theo ist offline   Mit Zitat antworten
Alt 25.01.2006, 22:41   #4
TP-Moderator
 
Benutzerbild von Malleus
 
Registriert seit: Aug 2004
Ort: Homburg / Saarland
Malleus ist ein richtiges Arbeitstier - DANKEMalleus ist ein richtiges Arbeitstier - DANKEMalleus ist ein richtiges Arbeitstier - DANKEMalleus ist ein richtiges Arbeitstier - DANKE
So richtig hab' ich's noch nicht verstanden.

Wenn Du name="files[]" setzt, sollte PHP später das ganze als "Array" ansprechen.

Du kannst natürlich auch einfach über die "elements" gehen.

Code:
var theElements=document.formName.elements;
for (var i=0;i<theElements.length;i++)
{
if (theElements[i].name.indexOf("files")==0)
{
// mach' irgendetwas
}

};
[...hab' den Code jetzt nicht getestet ]

Hier könntest Du dann ein neues Array generierten und mit "push" die Elementes hinzufügen oder aber die Validierung direkt machen.

Vielleicht hilft's ja?
Malleus ist offline   Mit Zitat antworten
Alt 26.01.2006, 09:30   #5
TP-Specialist
 
Benutzerbild von theo
 
Registriert seit: Apr 2002
Ort: 743, evergreen terrace
theo macht sich hier sehr viel Mühe
files[] will ich nicht setzen, weil js damit nicht klarkommt. ich brauche aber fuer meine vorschau die daten erstmal nur im js (die werden zum schluss eh noch umstrukturiert, im js, bevor sie an php uebergeben werden).

die elemente des formulars durchzugehen ist auch keine loesung, da es noch wesentlich mehr elemente gibt (textfelder, radiobutton usw.). ich suche also nach einer loesung, bei der ich die gruppe der inputfelder selektieren kann.
theo ist offline   Mit Zitat antworten
Alt 26.01.2006, 10:47   #6
TP-Specialist
 
Benutzerbild von rewboss
 
Registriert seit: Mar 2005
Ort: Unterfranken
rewboss ist ein richtiges Arbeitstier - DANKErewboss ist ein richtiges Arbeitstier - DANKErewboss ist ein richtiges Arbeitstier - DANKErewboss ist ein richtiges Arbeitstier - DANKErewboss ist ein richtiges Arbeitstier - DANKErewboss ist ein richtiges Arbeitstier - DANKE
Zitat:
Zitat von theo
files[] will ich nicht setzen, weil js damit nicht klarkommt.
Doch -- und zwar mit document.forms[0]['files[]']

Zitat:
(die werden zum schluss eh noch umstrukturiert, im js, bevor sie an php uebergeben werden).
Und was ist, wenn JavaScript ausgeschaltet ist?
rewboss ist offline   Mit Zitat antworten
Alt 26.01.2006, 10:52   #7
TP-Specialist
 
Benutzerbild von theo
 
Registriert seit: Apr 2002
Ort: 743, evergreen terrace
theo macht sich hier sehr viel Mühe
Zitat:
Zitat von rewboss
Und was ist, wenn JavaScript ausgeschaltet ist?
dann funzt die admin nicht. aber ohne js macht es eh keinen sinn, dann der texteditor heisst tiny mce

ich hab es jetzt ueber ein extra-array und push geloest bekommen (manchmal muss man einfach ne nacht drueber schlafen). aber den hinweis mit dem array teste ich nochmal.

danke ihr beiden!
hardy
theo ist offline   Mit Zitat antworten
Alt 26.01.2006, 20:10   #8
TP-Moderator
 
Benutzerbild von Malleus
 
Registriert seit: Aug 2004
Ort: Homburg / Saarland
Malleus ist ein richtiges Arbeitstier - DANKEMalleus ist ein richtiges Arbeitstier - DANKEMalleus ist ein richtiges Arbeitstier - DANKEMalleus ist ein richtiges Arbeitstier - DANKE
Es hat mir einfach keine Ruhe gelassen: Hier ist die Lösung des Problems: Der MSIE erzeugt jetzt mit "insertAdjacentHTML" auch ein Array:

Test

Code:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Malleus' Test</title>
<script type="text/javascript">

function initPage()
{
oMyForm=document.forms[0];
};

function createNewControl(theForm,controlType,controlName)
{
	if (theForm.insertAdjacentHTML)
	{
		theForm.insertAdjacentHTML("beforeEnd",'<input type="'+controlType+'" name="'+controlName+'"/>');
		return theForm.lastChild;
	}
	else
	{
		var newControl=document.createElement("input");
		newControl.setAttribute("type",controlType);
		newControl.setAttribute("name",controlName);
		theForm.appendChild(newControl);
		return newControl;
	};

};

function check4NewControl(myControl)
{
	if (myControl.value)
	{
		oMyForm.appendChild(document.createElement("br"));

		var newFileControl=createNewControl(oMyForm,"file","myFiles");

		newFileControl.onchange=function(){check4NewControl(this)};
	}
}

function checkIt()
{
alert(oMyForm["myFiles"].length);

}
</script>
</head>

<body onload="initPage()">
<button onclick="checkIt()">alert( document.myForm.myFiles.length )</button>
<form name="myForm">
<input type="file" name="myFiles" onchange="check4NewControl(this)">
</form>
</body>
</html>
Malleus ist offline   Mit Zitat antworten
Alt 27.01.2006, 12:01   #9
TP-Specialist
 
Benutzerbild von theo
 
Registriert seit: Apr 2002
Ort: 743, evergreen terrace
theo macht sich hier sehr viel Mühe
krass! frank ... du bist und bleibst einer meiner groessten js-helden
theo ist offline   Mit Zitat antworten
Antwort

  Aktuelles Thema
  TP Hilfe Forum > Web-Editoren & Coding > HTML Puristen > Javascript
array nur im ff array nur im ff
« Suchen mit regex | ID trotzdem vorhanden wenn... »

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 18:48 Uhr.

Powered by: vBulletin Version 3.7 (Deutsch)
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd. / Search Engine Friendly URLs by vBSEO 3.2.0 ©2008, Crawlability, Inc.
Traum-Projekt.com | Suchen | Archiv | Impressum | Kontakt | | | Nach oben |



1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67