2013-06-26 4 views
1
<script language="javascript" type="text/javascript"> 

function moveNumbers(num) { 
var txt=document.getElementById("result").value; 
txt=txt + num; 
document.getElementById("result").value=txt; 
} 
</script> 

<textarea id="result" name="image_id" rows="8" cols="11" readonly> 

</textarea> 
<tr> 

<?php 
$path = "photos/"; 
$dir_handle = @opendir($path) or die("Unable to open folder"); 
echo "<table height='500px'width='800px'align='center'border='1'>"; 
echo "<tr>"; 
while (false !== ($file = readdir($dir_handle))) { 

if($file == "index.php") 
continue; 
if($file == ".") 
continue; 
if($file == "..") 
continue; 
{ 
echo ($x % 6 == 0) ? "</tr><tr>" : ""; 
echo "<td><input type='checkbox' name='add' value='$file'    
onclick='moveNumbers(this.value)'> 
<img src='photos/$file'alt='$file' style='height:auto;width:50%;'alt='$file'> 
<br> 
$file 
</td>"; 
$x++; 
} 
} 
echo "</tr>"; 
echo "</table>"; 
closedir($dir_handle); 
?> 

Salut à tous, PHP trouve des fichiers image et les affiche avec des cases à cocher à côté d'eux. J'ai des problèmes avec l'entrée des cases à cocher dans la zone de texte. Lorsque cette case est cochée, le texte est ajouté et lorsque vous décochez la case, le même texte est à nouveau ajouté. J'essaie de faire ce qui suit: Vérifié -> Ajouter du texte, décochez la même case -> Supprimer le texte. Des idées?Multiple Cochez la case dans la zone de texte - ajoutez du texte - supprimez le texte de la zone de texte

Répondre

1

Si vous souhaitez ajouter arbitrairement un texte inconnu à l'avance, puis le supprimer ultérieurement, vous devez soit conserver une liste d'éléments qui ont été ajoutés et régénérer le résultat à chaque fois, soit effectuer une recherche/remplacez l'opération pour l'enlever. Je pense que maintenant la liste est plus facile:

var itemsAdded = Array(); 

function moveNumbers(text) { 
    var i = itemsAdded.indexOf(text) 
    if (i >= 0) { 
     itemsAdded.splice(i,1); 
    } else { 
     itemsAdded.push(text); 
    } 
    document.getElementById("result").value=itemsAdded.join(" "); //if you want each on a separate line, use "\n" instead of " " 
} 
+0

Salut Joe, Reason for no id pour les cases à cocher est qu'ils sont faits à la volée via le répertoire PHP recherche PHP affiche des images avec case à cocher à côté. eux .. Cheers – CPM

+0

retravaillé pour ne pas utiliser l'ID, juste dele te la première occurrence de la valeur. Cela devrait fonctionner correctement tant que les cases à cocher 2 n'ont pas la même valeur. – Joe

+0

aww putain ne peut toujours pas le faire fonctionner? faire quelque chose de mal je pense? – CPM

0

Après avoir examiné pourquoi quelqu'un voudrait faire cela, il me est apparu que vous pourriez essayer de présenter à l'utilisateur une liste générée dynamiquement des cases à cocher, puis déterminer serveur -les quelles boîtes ont été vérifiées.

Si c'est ce sur quoi vous travaillez, vous pouvez trouver utile de recevoir la liste sous forme de tableau PHP. Pour cela, changer simplement l'attribut name de vos cases à cocher générées dynamiquement pour mettre fin à [] Je l'ai testé en utilisant ce code:

<script> 
     $(function() { 
      for(i=0;i<10;i++) { 
       $("form").append("<input type='checkbox' name='add[]' value='img_id" + i + "'>Checkbox " + i + "</input><br/>") 
      } 
     }); 
    </script> 
    <form id='selection' action='info.php' method='POST'> 
     <input type="submit" /><br /> 
    </form> 

Après avoir vérifié les boîtes, 6-8 0,4, et en cliquant soumettre, dans $_POST le script info.php avait cette valeur (comme retournée par print_r($_POST);:

Array 
(
    [add] => Array 
     (
      [0] => img_id0 
      [1] => img_id4 
      [2] => img_id6 
      [3] => img_id7 
      [4] => img_id8 
     ) 
) 
+0

Oui, je pense que dynamique était le mot manquant de ma question initiale, il a probablement plus de sens même pour moi maintenant! Je vais vérifier, Cheers Joe. – CPM

Questions connexes