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?