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私のフォームの隠しフィールドの一部です。したがって、削除ボタンが選択されたときにそれをphp関数に渡す必要があります。これに取り組む方法がよくわかりません。これが理にかなっていることを願っています。

4

2 に答える 2

0

特定の時点で jQuery を介して非表示のフィールドにアクセスしたい場合は、このアプローチは問題ありませんが、フォームを送信して DOM を失うと、PHP 処理ページには選択したチェックボックスを非表示のフィールドに関連付ける方法がありません。一貫した命名スキーム。

1 つのアプローチは、ループ カウンターを使用して 2 つのサフィックスを付けて、それらをペアにすることです。

<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"]; ?>" />

これは、2 つ以上のフィールドを関連付けたい場合に適しています。それ以外の場合は、Ing が提案したように、video_name をチェックボックスの値として使用できます。

于 2012-04-23T19:11:23.593 に答える
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 に答える