<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找到图像文件并显示它们旁边的复选框。我输入文本区域的复选框有问题。选中后会添加文本,然后取消选中它会再次添加相同的文本。我正在尝试执行以下操作:已检查 - &gt;添加文字,取消选中相同的复选框 - &gt;删除文字。有什么想法吗?
答案 0 :(得分:1)
如果您想要任意添加事先未知的文本然后将其删除,您需要保留已添加的项目列表并每次重新生成结果,或者执行搜索/替换删除它的操作。我认为保持清单更容易:
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 " "
}
答案 1 :(得分:0)
在考虑为什么有人想要这样做之后,我想到你可能试图向用户呈现动态生成的复选框列表,然后确定服务器端检查了哪些框。
如果您正在使用它,您可能会发现将列表作为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并单击提交后,info.php脚本中的$_POST
具有此值(由print_r($_POST);
返回:
Array
(
[add] => Array
(
[0] => img_id0
[1] => img_id4
[2] => img_id6
[3] => img_id7
[4] => img_id8
)
)