Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    Selezionatore di immagini

    Ciao.
    Ho l'esigenza di far selezionare all'utente un'immagine tra una lista di immagini.

    Non trovando molti argomenti a proposito mi sono un po'arrangiato usando diversi script trovati qua e là.
    Innanzitutto vi faccio vedere la mia pagina d'esempio , in modo che possiate capire di cosa sto parlando. Premetto che non funziona con IE, mentre con FF e Chrome sì.

    Ecco il codice:

    formselezionaimmagine.html
    codice:
    <form id="inserimento_prodotto" name="nouvelle" method="post" action="azioni/nuovo_prodotto.php">
      <table width="600" border="0">
        <tr>
          <td>Immagine</td>
          <td>
          <input name="newcom" type="text" id="newcom" disabled="disabled" /><input type="button" value="scegli immagine" onClick="window.open('scegliimmagine.php','popup','width=700,height=600,scrollbars');"></td>
        </tr>
        <tr>
        <td></td>
        <td><input name="submit" type="submit" value="invia" /></td>
        </tr>
      </table>
    </form>
    Molto semplicemente: ho un campo text disabilitato, di nome newcom e un pulsante di scelta immagine che apre una popup per la scelta dell'immagine.

    scegliimmagine.php (è la popup che si apre)
    Codice PHP:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" lang="it">
    <head>

    <title>Scegli Immagine</title>
            
    <style type="text/css">

     img {
     padding: 5px;
     height: 80px;
    }
    div#fisso{
       height:60px;
        border-bottom:3px solid #000;
       position:fixed;
        top:0px;
      left:0px;
        right:0px;
        background:#bbb;
            z-index:999999;
            
        }
    div#immagini{
        position:relative;
        top:60px;
        }
        div#singolaimmagine{
            float:left;
            border: 1px solid #000;
            height:130px;
            margin:3px;
            padding:2px
        }
    .nolines {
        
        text-decoration:none}
    </style>
     
      
      

    <script language="javascript"> 
    function valeur(test){
     window.opener.document.forms['nouvelle'].newcom.value= document.form1.nomeimmagine.value;}
    </script>



    <script type="text/javascript">
    function addText(instext) {
        var mess = document.form1.nomeimmagine;
            //IE support
            if (document.selection) {
                mess.focus();
                sel = document.selection.createRange();
                sel.text = instext;
                document.form1.focus();
            }
            //MOZILLA/NETSCAPE support
            else if (mess.selectionStart || mess.selectionStart == "0") {
                var startPos = mess.selectionStart;
                var endPos = mess.selectionEnd;
                var chaine = mess.value;

                mess.value = chaine.substring(0, startPos) + instext + chaine.substring(endPos, chaine.length);

                mess.selectionStart = startPos + instext.length;
                mess.selectionEnd = endPos + instext.length;
                mess.focus();
            } else {
                mess.value += instext;
                mess.focus();
            }
        }
    </script>



    <script type="text/javascript" language="JavaScript">
    <!--
    function Reset_fields(nome_form){
        nome_form = "document."+nome_form;        
        //alert("nome_form.length:"+eval(nome_form+".length"));    
        for (i=0;i< eval(nome_form+".length");i++){
            var fild_name=eval(nome_form).elements[i].name;        
            var field_type=eval(nome_form).elements[i].type;
            //alert("Campo:"+nome_form);
            //alert("nome_form:"+fild_name+"\nTipo-->"+field_type);
            /* --- TEXT FIELD --- */
            
                var campo=eval(nome_form).elements[i].name;
                eval(nome_form+"."+campo+".value=\"\"");
            
        }
    }

    //-->
    </script>

    </head>
    <body>

    <div id="fisso">
    <span style="float:left; padding:10px">
    <form name="form1">
      <input name="nomeimmagine" type="text" disabled="disabled" />

    </form>
    <form name="form">
    <input type="button" onClick="valeur();window.close();" value="FATTO">
    </form>
    </span>
    <span style="float:right; padding:10px">[url="upload.php"]Carica una nuova immagine[/url]</span>
    </div>

    <div id="immagini">



      <?php
     
    // qua apro una cartella ed elenco le immagini presenti all'interno. 
    $path "img/";
    $dir_handle = @opendir($path) or die("Unable to open folder");
     
    while (
    false !== ($file readdir($dir_handle))) {
     
        if(
    $file == "index.php")
        continue;
        if(
    $file == ".")
        continue;
        if(
    $file == "..")
        continue;
     
    echo 
    "<div id=\"singolaimmagine\"><a href=\"#\" class=\"nolines\" onclick=\"Reset_fields('form1');addText('{$path}{$file}');return(false);\"><img src=\"{$path}{$file}\" border=\"0\" />
    <p style=\"text-align:center\">
    {$file}</p></a></div>";
     
    }
    closedir($dir_handle);
     
    ?>
    <div style="clear:both"></div>
    </div>
      
      

    </p>


    </body>
    </html>
    In questo file c'è un div fisso in alto, dove troviamo un campo text che viene riempito dal nome dell'immagine cliccata dall'utente e sotto la lista di tutte le immagini presenti nella cartella img.

    Il problema è che funziona perfettamente con Firefox e chrome, ma non con IE. Più precisamente è la funzione javascript addText() a non funzionare, sebbene al suo interno sia previsto l'uso in IE.

    Qualche soluzione? Sbaglio qualcosa?
    fox

  2. #2
    Utente di HTML.it
    Registrato dal
    Apr 2000
    Messaggi
    938
    Ciao,

    IE non aggiorna dati in un campo nascosto o disabilitato, devi abilitarlo all'inserimento del ('text') e dopo disattivarlo.


    ES:


    codice:
    <a href="javascript:void(0)" class="nolines" onclick="document.form1.nomeimmagine.disabled=false;Reset_fields('form1');addText('img/cow.jpg');return document.form1.nomeimmagine.disabled=true">
    M.

  3. #3
    perfetto, funziona perfettamente!! Grazie infinite!

    A questo punto vorrei fare un'altra piccola modifica...
    Nella pagina in cui è possibile selezionare le immagini, ogni immagine (presente nella mia cartella) viene inserita dentro un div, con sotto il nome dell'immagine.

    Mi piacerebbe fare in modo che cliccando su un'immagine, oltre a riempirsi il form in alto, lo sfondo del div che contiene l'immagine cambiasse colore. Poi, cliccando su un'altra immagine, lo sfondo della prima tornasse normale e si colorasse invece lo sfondo della seconda.

    Ho provato a fare un goffo tentativo:
    codice:
    onchange="document.getElementById('singolaimmagine').style.background='#00ff00'"
    così solo come prova, applicato al campo di testo in alto.

    Mi sarei aspettato che appena avrei cliccato su un'immagine tutti i div avrebbero cambiato colore. e invece no.
    fox

  4. #4
    Ho risolto.

    Ho semplicemente inserito queste due funzioni

    codice:
    <script language="javascript">
    
    function colora(div)
    {
    document.getElementById(div).style.backgroundColor='grey';
    }
    function resettaColore(){
    	var v=document.getElementsByTagName('div');
    	for(var i=0;i<v.length;i++) v[i].style.backgroundColor='white';
    
    }
    </script>
    e richiamate sulle singole immagini così:

    Codice PHP:
    echo "<div class=\"singolaimmagine\" id=\"{$file}\" align=\"center\"><a href=\"#\" class=\"nolines\" onclick=\"document.form1.nomeimmagine.disabled=false;Reset_fields('form1');addText('{$path}{$file}');return document.form1.nomeimmagine.disabled=true;\" onMouseDown=\"resettaColore();colora('$file');\"><img src=\"{$path}{$file}\" border=\"0\" />
    <p style=\"text-align:center\">
    {$file}</p></a></div>"
    ESEMPIO

    Grazie
    ciao
    fox

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.