多个复选框输入到文本区域 - 添加文本 - 从文本区域中删除文本


Multiple Check box input to text area - add text - remove text from text area

<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);
 ?>

大家好,PHP 查找图像文件并在它们旁边用复选框显示它们。我在输入文本区域的复选框时遇到问题。选中后,它会添加文本,然后当您取消选中时,它会再次添加相同的文本。我正在尝试执行以下操作:选中 -> 添加文本,取消选中相同的复选框 -> 删除文本。有什么想法吗?

如果要任意添加事先不知道的文本,然后删除它,则需要保留已添加的项目列表并每次重新生成结果,或者执行搜索/替换操作以将其删除。 我认为保留列表更容易:

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 " "
} 

在考虑了为什么有人想要这样做之后,我突然想到您可能正在尝试向用户显示动态生成的复选框列表,然后确定服务器端选中了哪些框。

如果这就是您正在处理的内容,您可能会发现将列表作为 PHP 数组接收回来很有用。要获得它,只需将动态生成的复选框的 name 属性更改为以 [] 结尾我使用以下代码进行了测试:

    <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>

选中框 0、4、6-8 并单击提交后,$_POST info.php脚本具有以下值(由 print_r($_POST); 返回:

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