2012-04-23 4 views
0

У меня есть HTML-таблица Я обновил использовать флажки, чтобы иметь возможность удалить несколько файлов:процесса скрытое поле с JQuery и вычислить

<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_name является частью скрытого поля в моей форме. Поэтому мне нужно передать это в мою php-функцию, когда выбрана кнопка удаления. Не совсем уверен, как справиться с этим. Надеюсь, это имеет смысл.

ответ

0

Простое решение может быть:

Измените флажки, чтобы иметь значение 1 и имя $ result_videos [$ я] [ "VIDEO_NAME"]; в строках таблицы, сделайте форму инкапсулировать всю таблицу.

Тогда на представить вы можете сделать что-то вроде:

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

На самом деле не уверен, что я понимаю? _POST должен будет вернуть только те флажки, которые выбраны. Код javascript знает, что проверено, но не код сервера? – Tom

+0

Если вы дадите свои флажки имя '$ result_videos [$ i] [" video_name "];' тогда это будут ключи в массиве POST для этих элементов формы, указав им значение 1, а затем проверка на это будет скажите, были ли они выбраны для отправки. – Ing

+0

О, я понял. Моя проблема в том, что для макета я создал кнопку вне формы. Это означает, что мне нужно создать форму в javascript. Вероятно, я должен повторить вопрос. Спасибо за подсказку, для выполнения обработки флажка, которая будет работать. Я отмечу, как решил. – Tom

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 в качестве значения флажка, как предположил Инг.

Смежные вопросы