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

HTML+CSS+JavaScript

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

 

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

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Добавление поля

Сообщения:  [1-10]   [11-14] 

 
 автор: selma   (10.12.2010 в 03:01)   письмо автору
 
   для: АЯ   (10.12.2010 в 02:51)
 

ОГРОМНОЕ СПАСИБО!!! АЯ, ВЫ лучший! что бы я без Вас делала:))))))

SHAME: надо учить матчасть...

  Ответить  
 
 автор: АЯ   (10.12.2010 в 02:51)   письмо автору
 
   для: selma   (10.12.2010 в 02:16)
 

<script>
function F ()
{
var str = document.getElementById ('mStr'), tbl = str.parentNode, row = tbl.insertRow (-1);
for (var j = 0, w = str.cells, l = w.length; j < l; j++)
if (w [j].rowSpan > 1) w [j].rowSpan++;
else {
     var cel = row.insertCell (-1), inp = document.createElement ('input');
     inp.name = w [j].firstChild.name; cel.appendChild (inp);
     }
return false;
}
</script> 

<table border=1>   
<tr>   
  <td>Поле1</td>   
  <td colspan=5>Поле2 <a href='#' onclick="return F ()">(Добавить строку)</a></td>   
  <td>Поле3</td>
  <td>Поле n (сколь угодно таких полей)</td>  
</tr>   
<tr id="mStr">   
  <td rowspan=2>Значение1</td>   
  <td><input type=text name=name1[]></td>   
  <td><input type=text name=name2[]></td>
  <td><input type=text name=name3[]></td> 
  <td><input type=text name=name4[]></td> 
  <td><input type=text name=name5[]></td> 
  <td rowspan=2>Значение1</td>  
  <td rowspan=2>Значение n (сколь угодно таких полей)</td>  
</tr>   
</table>

  Ответить  
 
 автор: selma   (10.12.2010 в 02:16)   письмо автору
 
   для: АЯ   (09.12.2010 в 11:16)
 

я знаю, что волшебной палочки не бывает...вначале думала что покажу упрощенный вариант таблицы, а JS сработает как надо...но увы...

вобщем структура такая (окончательная):
ДО
<table border=1>   
<tr>   
  <td>Поле1</td>   
  <td colspan=5>Поле2 <a href='#'>(Добавить строку)</a></td>   
  <td>Поле3</td>
  <td>Поле n (сколь угодно таких полей)</td>  
</tr>   
<tr>   
  <td rowspan=2>Значение1</td>   
  <td><input type=text name=name1[]></td>   
  <td><input type=text name=name2[]></td>
  <td><input type=text name=name3[]></td> 
  <td><input type=text name=name4[]></td> 
  <td><input type=text name=name5[]></td> 
  <td rowspan=2>Значение1</td>  
  <td rowspan=2>Значение n (сколь угодно таких полей)</td>  
</tr>   
</table>

ПОСЛЕ
<table border=1>   
<tr>   
  <td>Поле1</td>   
  <td colspan=5>Поле2 <a href='#'>(Добавить строку)</a></td>   
  <td>Поле3</td>
  <td>Поле n (сколь угодно таких полей)</td>  
</tr>   
<tr>   
  <td rowspan=3>Значение1</td>   
  <td><input type=text name=name1[]></td>   
  <td><input type=text name=name2[]></td>
  <td><input type=text name=name3[]></td> 
  <td><input type=text name=name4[]></td> 
  <td><input type=text name=name5[]></td> 
  <td rowspan=3>Значение1</td>  
  <td rowspan=3>Значение n (сколь угодно таких полей)</td>  
</tr>
<tr>   
  <td><input type=text name=name1[]></td>   
  <td><input type=text name=name2[]></td>
  <td><input type=text name=name3[]></td> 
  <td><input type=text name=name4[]></td> 
  <td><input type=text name=name5[]></td> 
</tr>

</table>

Очень хочу попросить АЯ помочь с реализацией фантазии (крайне обдуманной):)

  Ответить  
 
 автор: АЯ   (09.12.2010 в 11:16)   письмо автору
 
   для: selma   (09.12.2010 в 02:22)
 

>"еслиб была возможность сделать универсальным JS скрипт, было бы замечательно..."

Я понял, selma, Вам таки нужна волшебная палочка.
Чтобы махнуть - и ВСЁ само собою сделалось ТАК, как Вам оно захочется СЕГОДНЯ.
А потом - махнуть ещё раз - и чтобы получилось ТАК, как это Вам захочется ЗАВТРА...

Увы, нету её у меня для Вас.

И вряд ли у кого найдётся.

Городить чего-то такое, что может учесть все Ваши извращённые фантазии (настоящие и будущие) - это надо влезть вовнутрь Вашей головы и определить - чего она ещё ВДРУГ придумает :-)
А это, как понимаете, невозможно.

  Ответить  
 
 автор: coloboc66   (09.12.2010 в 11:03)   письмо автору
 
   для: selma   (09.12.2010 в 02:22)
 

inp.setAttribute("name","some_name");

  Ответить  
 
 автор: selma   (09.12.2010 в 02:22)   письмо автору
 
   для: АЯ   (08.12.2010 в 18:22)
 

for AЯ, ваш код приминительно к конкретной задаче, подходит, НО изменим структуру таблицы, и все поплыло:

<table border=1>   
<tr>   
  <td>Поле1</td>   
  <td>Поле2</td>   
  <td><a href='#' onclick="return F ()">Добавить</a></td>   
  <td>Поле3</td>  
  <td>Поле n (сколь угодно таких столбцов)</td>  
</tr>   
<tr id="mStr">   
  <td rowspan=2>Значение1</td>   
  <td><input type=text></td>   
  <td><input type=text></td>   
  <td rowspan=2>Значение1</td>  
  <td rowspan=2>Значение n (сколь угодно таких столбцов)</td>  
</tr>   
</table>

Вариант очень компактный, еслиб была возможность сделать универсальным JS скрипт, было бы замечательно...
З.Ы: Стоит учесть, что это все таки форма для отправки, и добавочные поля должны как то именоваться например name[$i]

  Ответить  
 
 автор: АЯ   (08.12.2010 в 18:22)   письмо автору
 
   для: selma   (08.12.2010 в 02:04)
 

<script>
function F ()
{
var str = document.getElementById ('mStr'), tbl = str.parentNode;
str.cells [0].rowSpan++; str.cells [2].rowSpan++; 

var row = tbl.insertRow (-1), cel = row.insertCell (-1);
cel.colSpan = 2;

var inp = document.createElement ('input');
cel.appendChild (inp);

return false;
}
</script>


<table border=1> 
<tr> 
  <td>Поле1</td> 
  <td>Поле2</td> 
  <td><a href='#' onclick="return F ()">Добавить</a></td> 
  <td>Поле3</td> 
</tr> 
<tr id="mStr"
  <td rowspan=2>Значение1</td> 
  <td colspan=2><input type=text></td> 
  <td rowspan=2>Значение3</td> 
</tr> 
<tr> 
  <td colspan=2><input type=text></td> 
</tr> 
</table>

  Ответить  
 
 автор: coloboc66   (08.12.2010 в 11:51)   письмо автору
 
   для: selma   (08.12.2010 в 02:04)
 

Если у вас, к примеру, есть ячейка <td id="td0"> , то элементы в неё добавляются так:
var inp=document.createElement('input');
inp.setAttribute("type","text");
document.getElementById("td0").appendChild(inp);

Такой смысл, в общем. Если нужно добавлять много элементов во много элементов, используете циклы.

  Ответить  
 
 автор: sim5   (08.12.2010 в 11:29)   письмо автору
 
   для: Bombey   (08.12.2010 в 10:42)
 

Почему обязательно jQuery? Я не пртив него, но против использовать его только ради решения этой задачи. Есть в JS объект table и методы работы с ним, и они не так уж и сложны, чтобы отдавать предпочтение jQuery.

  Ответить  
 
 автор: Bombey   (08.12.2010 в 10:42)   письмо автору
 
   для: selma   (08.12.2010 в 02:04)
 

Если не имеете ничего против jQuery.ю тогда вот что...


$(function () {

    $('table .add').click(function () {
        // добавляем новую строку вниз таблицы
        $(this).parents('table').append('<tr><td colspan=2><input type=text></td></tr>');
        // пересчитываем количество строк для rowspan
        var rowsNumber = $(this).parents('table').find('tr').size() - 2;
        // изменяем параметр rowspan для ячейки
        $(this).parents('table').find('.firstCol').attr('rowspan', rowsNumber);
        return false;
    });
});


Но в вашем коде нужно сделать пару изменений.
Во-первых, <td rowspan=3>Значение1</td> нужно задать какой-нибудь класс. Я прописал .firstCol , можете изменить, если хотите.
во-вторых, ссылке "добавить" тоже нужен класс. Я прописал так <a href='' class='add'>Добавить</a>

P.S. Код не тестировал, потому возможно, где-то будет ошибка. Надеюсь поможет.

  Ответить  

Сообщения:  [1-10]   [11-14] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

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