Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Занести значения всех ячеек TD в переменную
 
 автор: web777   (08.09.2010 в 13:56)   письмо автору
 
 

пытаюсь получить значения таблицы всех ячеек td как это можно сделать?

делал так


$(document).ready(function() {

   $(".btn-order").click(function(){

      alert( $("#order tbody tr td:eq(1)").val() );

   })


});


<table id="order">
<tbody>      
  <tr>
   <td><input name="id[1]" value="1" type="checkbox"></td>
   <td>Логические</td>
  </tr>
  <tr>
   <td><input name="id[2]" value="2" type="checkbox"></td>
   <td>Аркадные</td>
  </tr>
  <tr>
   <td><input name="id[4]" value="4" type="checkbox"></td>
   <td>Стрелялки</td>
  </tr>
</tbody>
</table>



и сама ссылка
<a href="#" class="btn-order">Сохранить</a>

при нажатии на которую нужно получить все данные ячеек и передать php скрипту, но с передачей думаю справлюсь, тут хотя бы занести в переменную значения ячеек, помогите плз.

js код который привёл вверху я ожидал что вернёт значение первой ячейки со значением "Логические" но за место этого пишет пустую ошибку

  Ответить  
 
 автор: sim5   (08.09.2010 в 14:55)   письмо автору
 
   для: web777   (08.09.2010 в 13:56)
 

А вас как бы не смущает, что некоторые ячейки таблицы order содержат не текст, а html элемент?

  Ответить  
 
 автор: web777   (08.09.2010 в 15:08)   письмо автору
 
   для: sim5   (08.09.2010 в 14:55)
 

в принципе нет, но мне нужно только два столбца, один с ID второй с названием, а если и будет html то через PHP удалю

вообще я делаю для этого плагина
http://www.isocra.com/2008/02/table-drag-and-drop-jquery-plugin/

в данном плагине реализовано сохранение но только при перемещении строк, а я хотел сделать по нажатию кнопки или ссылки, иначе много запросов получиться, а так отсортировал строчки и подал запрос

  Ответить  
 
 автор: sim5   (08.09.2010 в 15:19)   письмо автору
 
   для: web777   (08.09.2010 в 15:08)
 

А очень жаль, что не смущает. Не стоит говорить о той ерунде что вы написали, так как:
<input name="id[]" value="1" type="checkbox">
<input name="id[]" value="2" type="checkbox">
<input name="id[]" value="4" type="checkbox">
......
как видно не просто так написаны, а это ID неких записей, которые будут определять и стрелеляки, и аркады, и т.д., и т.п.... То есть, передавая на сервер ID, можно узнать, что просят. Следовательно, чтобы передать чего просят, нужно передать значения выбранных чекбоксов, то есть обрабатывать их клик.

И не name="id[1]" value="1", а name="id[]" value="1" - нет смысла дублировать id в двух атрибутах. Либо вы работаете с ключами массива, но в этом случае значение должно играть некую роль - например, количество. Иначе достаточно просто проверять значение содержащее ID.

  Ответить  
 
 автор: web777   (08.09.2010 в 15:32)   письмо автору
 
   для: sim5   (08.09.2010 в 15:19)
 

это верно, но я рассчитывал через PHP разобрать чекбоксы, ну в принципе не важно, можно по имени определять, сейчас сделал так


$(".btn-order").click(function(){
 
var w = "";
var trcount = $("tbody tr").size();
var j = 0;

       if ( trcount > 0) {
         
       for (j=0;j<trcount;j++) 
           {
             w += $("tbody tr:eq(j) td:eq(1)").html();
           }
       };

alert(w);
})


тут я в начале определил переменные, далее переменной trcount определили кол-во tr далее идёт проверка на строки чтобы было не меньше нуля, и следом делаю цикл перебираю все ячейки колонки с именем. Вроде бы всё ничё, но вот почему-то выдаёт nullnullnullnullnullnullnull
у меня 7 записей, на каждую по null что не так делаю?

хотя если выбираю по отдельности за место индекса j указываю цифру строчки всё нормально

  Ответить  
 
 автор: sim5   (08.09.2010 в 15:38)   письмо автору
 
   для: web777   (08.09.2010 в 15:32)
 

Знаете, я вот привык штаны одевать как и полагается, вы же хотите одеть их через голову. А потому, мне даже и не охота чего либо обсуждать по этому поводу. Спрашивается - а на кой ляд тогда вы чекбоксы повтыкали?

  Ответить  
 
 автор: web777   (08.09.2010 в 15:51)   письмо автору
 
   для: sim5   (08.09.2010 в 15:38)
 

извиняюсь, чекбоксы не имеют ни какого отношения, они просто остались у меня, т.к. они предназначены для другого функционала - удаления, отмеченные чекбоксы удаляются.

но вы на их не обращайте внимание, хотя мне нужно было конечно убрать чтобы не отвлекали.

Вообщем чекбоксы для этой задачи не имеют ни какого отношения, мне нужно выбрать только колонку с именем где значения Аркадные, Стрелялки и т.п.

из последнего примера подскажите почему выдаёт null в значении, как сделать чтобы выдавало имя, ведь если указывать напрямую подставляя за место индекса j число строки, выводит как и должно

  Ответить  
 
 автор: sim5   (08.09.2010 в 16:45)   письмо автору
 
   для: web777   (08.09.2010 в 15:51)
 

Не знаю чего вы там творите, но отправлять значения ячеек для определения чего-то, ну это абсурд какой-то...
<script>
$(document).ready(function() {
  $('#sv').click(function(){
    alert('Rows: '+$('#order').find('td').length);
    $('#order').find('td').each(function(i) {
        alert(i+' - '+$(this).text());
      });
  });
});
</script>

<table id="order"> 
  <tr> 
   <td>Логические</td> 
  </tr> 
  <tr> 
   <td>Аркадные</td> 
  </tr> 
  <tr> 
   <td>Стрелялки</td> 
  </tr> 
</table>

<input id="sv" type="button" value="Save">

  Ответить  
 
 автор: web777   (08.09.2010 в 17:14)   письмо автору
 
   для: sim5   (08.09.2010 в 16:45)
 

спасибо, примерно что то подобное уже сделал


var trcount = $("tbody tr").size();
var out = "";

if ( trcount > 0) {

 var seporator = "::";

      $('tbody tr').each(function(){
         out += $(this).find('td').eq(1).html();
             out += seporator;
      });

      // Передаем данные на сервер
      $.ajax({
             type: "POST",
             url: "/order",
             timeout: 5000,
             data: "order=" + out,
             success: function(data){$("div#upd-dnd").html(data);},
             error: function(data){$("div#upd-dnd").html("Error");}
         });
};


сейчас всё отлично работает.

Смысл в том что упращает реализацию сиртировки разделов, я применил такой плагин tableDnD
http://www.isocra.com/2008/02/table-drag-and-drop-jquery-plugin/

теперь отсортировав строки, и передав их обработчику, сохраним в том порядке как выставили строки. Порядок обработчиком можно определить по индексу массива. Теперь не нужно делать уже всем надоевшие стрелочки вверх и низ для перемещения разделов.

Таким образом сортировка теперь визуальная и без лишних телодвижений.

  Ответить  
 
 автор: sim5   (08.09.2010 в 17:31)   письмо автору
 
   для: web777   (08.09.2010 в 17:14)
 

$("tbody tr") - у вас что единственная таблица на странице?
Не понятно при чем тут сортировка, если вы значение ячеек как есть отправляете на сервер. К тому же, не индексом массива должен руководствоваться сервер, а id разделов. Стрелочки, это дело вкуса, вам никто не запрещает, например, перетаскивать элементы на странице, которые и будут определять конечную сортировку, но опять таки, руководствоваться надо ничем иным, кроме как уникальными номерами разделов.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования