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

HTML+CSS+JavaScript

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

 

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

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

тема: Добавление поля
 
 автор: selma   (07.12.2010 в 08:55)   письмо автору
 
 

Подскажите плиз

Есть таблица вида:
<table border=1>
<tr>
  <td>Поле1</td>
  <td>Поле2</td>
  <td><a href=''>Добавить</a></td>
  <td>Поле3</td>
</tr>
<tr>
  <td rowspan=2>Значение1</td>
  <td colspan=2>Поле ввода</td>
  <td rowspan=2>Значение3</td>
</tr>
<tr>
  <td colspan=2>Поле ввода</td>
</tr>
</table>


По нажатию на ссылку "добавить" должно добавиться "Поле ввода" соблюдая структуру таблицы
Помогите осуществить, я совсем уже потеряла надежду....(((((((

  Ответить  
 
 автор: Агамемнон   (07.12.2010 в 11:47)   письмо автору
 
   для: selma   (07.12.2010 в 08:55)
 

Хотелось бы более конкретного описания того,что Вам нужно:по этой таблице ничего не понять.Видимо,Вам нужна форма для отправки введенных данных на сервер?


<form method="post" action="../admin/forma.php">
<p>Значение 1 <input type="text" name="first" size="10"></p>
<p>Значение 2 <input type="text" name="second" size="10"></p>
<input type="submit" name="Submit" value="Отправить">
<input type="reset" name="Reset" value="Очистить форму">
</form>


Более подробно Вы можете прочитать здесь http://www.php.su/articles/?cat=examples&page=069 и здесь http://htmlbook.ru/html/form.

  Ответить  
 
 автор: АЯ   (07.12.2010 в 22:33)   письмо автору
 
   для: selma   (07.12.2010 в 08:55)
 

То, что у Вас было ДО нажатия на ссылку "добавить", мы теперь знаем.

Напишите ещё HTML-код того, что Вы хотите увидеть на странице ПОСЛЕ нажатия на ссылку "добавить".

И проблема Ваша решится, я уверен - кто-нить (может, и я) Вам обязательно поможет (когда будет знать - что именно Вам надо получить).

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

for Агамемнон: абстрагируйтесь от правил, то что я не привела полный код страницы, не значит что у меня нет <form и т.д


Совершенно верно, таблица представляет собой форму, для заполнения данных <input type=text>
До
<table border=1> 
<tr> 
  <td>Поле1</td> 
  <td>Поле2</td> 
  <td><a href=''>Добавить</a></td> 
  <td>Поле3</td> 
</tr> 
<tr> 
  <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>

После
<table border=1> 
<tr> 
  <td>Поле1</td> 
  <td>Поле2</td> 
  <td><a href=''>Добавить</a></td> 
  <td>Поле3</td> 
</tr> 
<tr> 
  <td rowspan=3>Значение1</td> 
  <td colspan=2><input type=text></td> 
  <td rowspan=3>Значение3</td> 
</tr> 
<tr> 
  <td colspan=2><input type=text></td> 
</tr>
<tr> 
  <td colspan=2><input type=text></td> 
</tr> 
</table>


Т.е после нажатия "добавить" добавляется ячейка в которой в свою очередь прописан "<input>".

З.Ы: ячеек можно добавлять сколь угодно (без огранчиений)
З.З.Ы: Изменяемые параметры при добавлении я выделила жирным шрифтом

Я уже искала по Поиску, нашла что это без DHTML не осуществить, нашла примерную схему добавления полей, но она совершенно не подходит для добавления конкретных ячеек таблицы..., мне нужно чтобы добавлялись определенные ячейки, но структура таблицы не искажалась:(((((((

  Ответить  
 
 автор: 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. Код не тестировал, потому возможно, где-то будет ошибка. Надеюсь поможет.

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

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

  Ответить  
 
 автор: 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);

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

  Ответить  
 
 автор: АЯ   (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>

  Ответить  
 
 автор: 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]

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

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

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

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

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

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

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

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

  Ответить  
 
 автор: 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>

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

  Ответить  
 
 автор: АЯ   (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 в 03:01)   письмо автору
 
   для: АЯ   (10.12.2010 в 02:51)
 

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

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

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

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