0

我有一个 html 表,我已更新为使用复选框来删除多个文件:

<table>
    <thead>
    <tr>
        <th>Camera Name</th>
        <th>Date Created</th>
        <th>Video Size</th>
        <th>Video Length</th>
        <th>
            <button type="submit" class="deletebutton" name="delete_video" value="Delete" title="Delete the selected videos" onClick="return confirm('Are you sure you want to delete?')">Delete</button><br>
            <input type="checkbox" name="radioselectall" title="Select All" />
        </th>
    </tr>
    </thead>
    <tbody>

 <?php

for($i=0;$i<$num_videos;$i++)
{
       //do stuff
       //Note: I'm looping here to build the table from the server
?>              
        <tr >
            <td onclick="DoNav('<?php echo $url; ?>');">
                        <?php echo $result_videos[$i]["camera_name"]; ?> 
            </td>
            <td onclick="DoNav('<?php echo $url; ?>');">
                        <?php echo setlocalTime($result_videos[$i]["video_datetime"]); ?> 
            </td>
            <td onclick="DoNav('<?php echo $url; ?>');">
                        <?php echo ByteSize($result_videos[$i]["video_size"]); ?>
            </td>
            <td onclick="DoNav('<?php echo $url; ?>');">
                <?php echo strTime($result_videos[$i]["video_length"]); ?>
            </td>
            <td>
                <form name="myform" action="<?php echo htmlentities($_SERVER['REQUEST_URI']); ?>" method="POST">
                <input type="checkbox" name="radioselect" title="Mark this video for deletion"/>
                <input type="hidden" name="video_name" value="<?php echo $result_videos[$i]["video_name"]; ?>" />
                </form>
            </td>
        </tr>

我首先创建了一些 jquery 代码以在表标题中创建一个全选/取消全选按钮,并且只是一个测试以显示我可以找到哪些框被选中。这一切都有效:

//selectall checkboxes - select all or deselect all if top checkbox is marked in table header
$("input[name='radioselectall']").change(function()
{
    if( $(this).is(':checked') )
    {
        $("input[type='checkbox']","td").attr('checked',true);
    } 
    else
    {
        $("input[type='checkbox']","td").attr('checked',false);
    }
});

//process checkboxes - which ones are on 
$(".deletebutton").click(function() {
    $("input[name='radioselect']:checked").each(function(i){
        alert(this.value);
    });
});

所以我被卡住的部分是我不知道从这里去哪里。我需要传递所有选定视频的所有 video_names(带有复选框)。 video_name是我表单中隐藏字段的一部分。So I need to pass that to my php function when the delete button is selected. 不太清楚如何解决这个问题。希望这是有道理的。

4

2 回答 2

0

简单的解决方案可能:

将您的复选框更改为值为 1,名称为 $result_videos[$i]["video_name"]; 在表格行中,使表格封装整个表格。

然后在提交时,您可以执行以下操作:

foreach ($_POST as $key => $value) {
    //Delete $key (the name) where $value == 1
}
于 2012-04-23T18:22:17.977 回答
0

如果您想在给定点通过 jQuery 访问隐藏字段,则您的方法很好,但是一旦您提交表单并丢失 DOM,PHP 处理页面将无法将选定的复选框与隐藏字段相关联,因为没有一致的命名方案。

一种方法是使用循环计数器为两者添加后缀,以便将它们配对:

<input type="checkbox" id="radioselect_<?= $i ?>" title="Mark this video for deletion" value="1" />
<input type="hidden" id="video_name_<?= $i ?>" value="<?php echo $result_videos[$i]["video_name"]; ?>" />

如果您想关联的不仅仅是这两个字段,这将是一件好事。否则,您可以按照 Ing 的建议将 video_name 用作复选框的值。

于 2012-04-23T19:11:23.593 回答