+ Antworten
Ergebnis 1 bis 9 von 9

Thema: array nur im ff

  1. #1
    TP-Specialist theo bringt sich richtig ein Avatar von theo
    Registriert seit
    Apr 2002
    Ort
    743, evergreen terrace
    Beiträge
    2.346

    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++;
      }
    }
    /b{2}|[^(bb)]/

    [Workshop] Nested sets

  2. #2
    TP-Moderator Malleus ist ein richtiges Arbeitstier - DANKE Malleus ist ein richtiges Arbeitstier - DANKE Malleus ist ein richtiges Arbeitstier - DANKE Malleus ist ein richtiges Arbeitstier - DANKE Avatar von Malleus
    Registriert seit
    Aug 2004
    Ort
    Homburg / Saarland
    Beiträge
    711
    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?

  3. #3
    TP-Specialist theo bringt sich richtig ein Avatar von theo
    Registriert seit
    Apr 2002
    Ort
    743, evergreen terrace
    Beiträge
    2.346
    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
    /b{2}|[^(bb)]/

    [Workshop] Nested sets

  4. #4
    TP-Moderator Malleus ist ein richtiges Arbeitstier - DANKE Malleus ist ein richtiges Arbeitstier - DANKE Malleus ist ein richtiges Arbeitstier - DANKE Malleus ist ein richtiges Arbeitstier - DANKE Avatar von Malleus
    Registriert seit
    Aug 2004
    Ort
    Homburg / Saarland
    Beiträge
    711
    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?

  5. #5
    TP-Specialist theo bringt sich richtig ein Avatar von theo
    Registriert seit
    Apr 2002
    Ort
    743, evergreen terrace
    Beiträge
    2.346
    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.
    /b{2}|[^(bb)]/

    [Workshop] Nested sets

  6. #6
    TP-Specialist rewboss ist ein richtiges Arbeitstier - DANKE rewboss ist ein richtiges Arbeitstier - DANKE rewboss ist ein richtiges Arbeitstier - DANKE rewboss ist ein richtiges Arbeitstier - DANKE rewboss ist ein richtiges Arbeitstier - DANKE rewboss ist ein richtiges Arbeitstier - DANKE Avatar von rewboss
    Registriert seit
    Mar 2005
    Ort
    Unterfranken
    Beiträge
    2.639
    Zitat Zitat von theo
    files[] will ich nicht setzen, weil js damit nicht klarkommt.
    Doch -- und zwar mit document.forms[0]['files[]']

    (die werden zum schluss eh noch umstrukturiert, im js, bevor sie an php uebergeben werden).
    Und was ist, wenn JavaScript ausgeschaltet ist?

  7. #7
    TP-Specialist theo bringt sich richtig ein Avatar von theo
    Registriert seit
    Apr 2002
    Ort
    743, evergreen terrace
    Beiträge
    2.346
    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
    /b{2}|[^(bb)]/

    [Workshop] Nested sets

  8. #8
    TP-Moderator Malleus ist ein richtiges Arbeitstier - DANKE Malleus ist ein richtiges Arbeitstier - DANKE Malleus ist ein richtiges Arbeitstier - DANKE Malleus ist ein richtiges Arbeitstier - DANKE Avatar von Malleus
    Registriert seit
    Aug 2004
    Ort
    Homburg / Saarland
    Beiträge
    711
    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>

  9. #9
    TP-Specialist theo bringt sich richtig ein Avatar von theo
    Registriert seit
    Apr 2002
    Ort
    743, evergreen terrace
    Beiträge
    2.346
    krass! frank ... du bist und bleibst einer meiner groessten js-helden
    /b{2}|[^(bb)]/

    [Workshop] Nested sets

+ Antworten

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

     

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