用jquery处理隐藏字段并计算

时间:2012-04-23 18:00:11

标签: php jquery

我有一个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代码,在表标题中创建了一个select all / deselect all按钮,只是一个测试来显示我可以找到哪些框被选中。这一切都有效:

//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_name是我表单中隐藏字段的一部分。因此,当选择删除按钮时,我需要将它传递给我的php函数。不确定如何解决这个问题。希望这是有道理的。

2 个答案:

答案 0 :(得分:0)

简单的解决方案可能:

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

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

foreach ($_POST as $key => $value) {
    //Delete $key (the name) where $value == 1
}

答案 1 :(得分: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"]; ?>" />

如果您想要关联两个以上的字段,这将是一件好事。否则,您可以使用video_name作为复选框的值,如Ing建议的那样。