Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Динамически создаваемые строки / 7 сообщений из 7, страница 1 из 1
12.06.2008, 07:13
    #35370826
DTri
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамически создаваемые строки
Доброго времени суточек!

Совершенствую админку,
нужна помощь, как сделать чтобы при выборе в Type[] в <DIV id='ConstValueEditor[]'></DIV> соответствующей строки вставлялся код или <INPUT 'Text'> при Type[].value=1 или <textarea> при Type[].value=2.


Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
<table border='0' cellspacing='1' cellpadding='1' width='100%' align='center'>
  <tr>
    <th width= 250 >Имя</th>
    <th width= 100 >Тип</th>
    <th>Значение</th>
    <th width= 60 ></th>
  </tr>
.......
  <tr>
    <td><input name='Name[]' type='text' style='width:100%' value='".$row['Name']."'></td>
    <td>
      <select name='Type[]'>
        <option value= 0  selected>...</option>
        <option value= 1 >Строка</option>
        <option value= 2 >Текст</option>
      </select>
    </td>
    <td><DIV id='ConstValueEditor[]'></DIV></td>
    <td align='center'>
      <input type='button' name=drop[] value=' − ' onclick='delrow(this);'>
      <input type='button' name=plus[] value=' + ' onclick='addrow(this);'>
    </td>
.......
Вот скриптик который добавляет новую строку:

  function addrow(btn){
    if(document.getElementById){
      tr = btn;
      while (tr.tagName != 'TR') tr = tr.parentNode;
      var newTr = tr.parentNode.insertBefore(tr.cloneNode(true),tr.nextSibling);
      thisChilds = newTr.getElementsByTagName('td');
      var coll = newTr.getElementsByTagName( "input" );
      for( var i =  0 ; i < coll.length; i ++ ){
        coll[i].value = "";
      }
    }
  }

Я весь код выборки из базы не пишу, часть между ....... повторяется n раз.
Скриптик добавления удаления работает, Надеюсь мои объяснения в 7 утра понятны :)
...
Рейтинг: 0 / 0
12.06.2008, 10:35
    #35370908
shiftee
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамически создаваемые строки
Ставишь сабытие на onCange

Код: plaintext
1.
2.
3.
4.
if (docement.getElementByName('Type').value==значение) {
     par = document.createElement('че создать хочешь');
     par.параметр = 'какой параметр нужен';
     document.getElementById('Куды сунуть хочешь').appendChild('par');
}

Вот как-то так... тока подогнать надо под твое решение.
...
Рейтинг: 0 / 0
12.06.2008, 11:57
    #35371018
DTri
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамически создаваемые строки
Вопрос остается, в какой из строк всетаки сработал элемент из массива объекта Type[] и как сопоставить соотетствующий объектиз Type[] с элементом <DIV> этой же строки
...
Рейтинг: 0 / 0
12.06.2008, 12:53
    #35371105
DTri
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамически создаваемые строки
Если упрастить, то

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
<tr>
    <td>
      <select name='Type[]'>
        <option value= 0  selected>...</option>
        <option value= 1 >Строка</option>
        <option value= 2 >Текст</option>
      </select>
    </td>
    <td><input name='Name[]' type='text' style='width:100%' value=''></td>
    <td align='center'>
      <input type='button' name=drop[] value=' − ' onclick='delrow(this);'>
      <input type='button' name=plus[] value=' + ' onclick='addrow(this);'>
    </td>
</tr>

как в соответствующим поле Name[] вывести значение Type[], очень нужно , мне главное понять принцип, а там разберусть.

Вот привожу рабочий код
...
Рейтинг: 0 / 0
12.06.2008, 13:16
    #35371170
Vint_x
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамически создаваемые строки
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
    <script type="text/javascript">
    
    function getNumElement(btn)
    {
        if(!document.forms[ 0 ].plus.length) return;
        for(i =  0 ; i<document.forms[ 0 ].plus.length;i++)
            if(document.forms[ 0 ].plus[i] == btn)
                return i;
        return;
    }
    
    function addrow(btn){
    if(document.getElementById){
      tr = btn;
      while (tr.tagName != 'TR') tr = tr.parentNode;
      var newTr = tr.parentNode.insertBefore(tr.cloneNode(true),tr.nextSibling);
      thisChilds = newTr.getElementsByTagName('td');
      var coll = newTr.getElementsByTagName( "input" );
      for( var i =  0 ; i < coll.length; i ++ ){
        coll[i].value = "";
      }
      
      alert("НОмер моего объекта: "+getNumElement(btn));
    }
  }
    </script>
</head>
<body>
<form action="./">
<table border='0' cellspacing='1' cellpadding='1' width='100%' align='center'>
  <tr>
    <th width= 250 >Имя</th>
    <th width= 100 >Тип</th>
    <th>Значение</th>
    <th width= 60 ></th>
  </tr>

  <tr>
    <td><input name='Name' type='text' style='width:100%' value='__'></td>
    <td>
      <select name='Type'>
        <option value= 0  selected>...</option>
        <option value= 1 >Строка</option>
        <option value= 2 >Текст</option>
      </select>
    </td>
    <td><DIV id='ConstValueEditor'></DIV></td>
    <td align='center'>
      <input type='button' name=drop value=" − " onclick='delrow(this);'>
      <input type='button' name=plus value=" + " onclick='addrow(this);'>
    </td>
    </tr>
    
  
    </table>
</form>
</body>
</html>

...
Рейтинг: 0 / 0
12.06.2008, 13:18
    #35371178
shiftee
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамически создаваемые строки
http://www.php.su/functions/?cat=dom

И не надо выходить за пределы php. Ибо, если мне ничего не изменяет, 'Name[]' воспринимается как имя массива Name только в пхп, а для яваскрипта при обращении к нему получится ошибочка. Соответственно, используя пхп класс ДОМ, можно сильно облегчить себе жизнь.
...
Рейтинг: 0 / 0
13.06.2008, 01:14
    #35371855
illion
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамически создаваемые строки
shifteeИбо, если мне ничего не изменяет, 'Name[]' воспринимается как имя массива Name только в пхп, а для яваскрипта при обращении к нему получится ошибочка.
если Вам кажется, что Вам что-то изменяет , то нужно пойти и проверить, а не вводить в заблуждение других людей. Яваскрипту фиолетово на [] в имени, т.к. для него это всего лишь текст, а не объект.

DTriкак в соответствующим поле Name[] вывести значение Type[], очень нужно

не совсем понятно, какой Name[] должен соответствовать какому Type[], но примерно так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
function addrow(btn){
	tr = btn;
	while (tr.tagName != 'TR') tr = tr.parentNode;
	var newInput;
	switch (tr.getElementsByTagName("select")[ 0 ].value)
	{
		case '1':
			newInput = document.createElement('input');	
			newInput.type = 'text';
			newInput.name = "Name[]";
			newInput.style.width = "100%";
			break;
		case '2':
			newInput = document.createElement('textarea');
			newInput.rows =  5 ;
			newInput.name = "Name[]";
			newInput.style.width = "100%";
	}
	var newTr = tr.parentNode.appendChild(tr.cloneNode(true));
	newTr.cells[ 1 ].innerHTML = '';
	if (newInput) newTr.cells[ 1 ].appendChild(newInput);
	checkForLast();
}
здесь берется Type из той строки, в которой было нажато "+", и в зависимости от него вставляется элемент в новую строку.
...
Рейтинг: 0 / 0
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Динамически создаваемые строки / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]