Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 10.01.2018, 03:45
Интересующийся
Отправить личное сообщение для mopsusha Посмотреть профиль Найти все сообщения от mopsusha
 
Регистрация: 21.01.2011
Сообщений: 15

Заменить name в input javascript
Есть код создания динамических таблиц, все работает хорошо, но для отправки формы на каждой строке таблицы name инпута должен заменяться на например
<tr>
<td>
<input name='0[stoimost]' >
</td>
<td>
<input name='0[usluga]' >
</td>
</tr>
<tr>
<td>
<input name='1[stoimost]' >
</td>
<td>
<input name='1[usluga]' >
</td>
</tr>


Однако он заменяет только если нажимаешь на кнопку добавления новой строки таблицы, а если таблица приходит из базы mysql первая строка таблицы заменяется, а остальные нет, остаются такими
<tr>
<td>
<input name='0[stoimost]' >
</td>
<td>
<input name='0[usluga]' >
</td>
</tr>
<tr>
<td>
<input name='stoimost' >
</td>
<td>
<input name='usluga' >
</td>
</tr>


Вот код JS

var DynamicTable = (function (GLOB) {
    var RID = 0;
    return function (tBody) {
        /* Если ф-цию вызвали не как конструктор фиксим этот момент: */
        if (!(this instanceof arguments.callee)) {
            return new arguments.callee.apply(arguments);
        }
        //Делегируем прослушку событий элементу tbody
        tBody.onclick = function(e) {
            var evt = e || GLOB.event,
                trg = evt.target || evt.srcElement;
            if (trg.className && trg.className.indexOf("add") !== -1) {
                _addRow(trg.parentNode.parentNode, tBody);
            } else if (trg.className && trg.className.indexOf("del") !== -1) {
                tBody.rows.length > 1 && _delRow(trg.parentNode.parentNode, tBody);
            }
        };
        var _rowTpl = tBody.rows[0].cloneNode(true);
        // Корректируем имена элементов формы
        var _correctNames = function (row) {
            var elements = row.getElementsByTagName("*");
            for (var i = 0; i < elements.length; i += 1) {
                if (elements.item(i).name) {
                    if (elements.item(i).type &&
                        elements.item(i).type === "radio" &&
                        elements.item(i).className &&
                        elements.item(i).className.indexOf("glob") !== -1)
                    {
                        elements.item(i).value = RID;
                    } else {
                        elements.item(i).name = RID + "["+ elements.item(i).name +"]";
                    }
                }
            }
            RID++;
            return row;
        };
        var _addRow = function (before, tBody) {
            var newNode = _correctNames(_rowTpl.cloneNode(true));
            tBody.insertBefore(newNode, before.nextSibling);
        };
        var _delRow = function (row, tBody) {
            tBody.removeChild(row);
        };
        _correctNames(tBody.rows[0]);
    };
})(this);


вот получение таблицы из mysql
<div id="tablici">
					
							<form method="post" id="myForm" action="">
									<table width="800" border="1" cellspacing="0" cellpadding="5">
										<thead>
											<tr>
																<th scope="col">КОМНАТ в комм</th>
																<th scope="col">КОРПУС</th>
																<th scope="col">ЭТАЖ</th>
																<th scope="col">S ОБЩАЯ</th>
																<th scope="col">S ЖИЛАЯ</th>
																<th scope="col">S КУХНИ</th>
																<th scope="col">ОТДЕЛКА</th>
																<th scope="col">БАЗОВАЯ СТОИМОСТЬ</th>
																<th scope="col">ПЛАНИРОВКА</th>
																<th scope="col">Кнопки</th>
											</tr>
										</thead>
										<tbody id="dynamic">
										
<?										
$keyk=0;										
if($session_data){	
				foreach($session_data as $keym =>$v){
					
								$v = unserialize($v);
								
									foreach($v as $k => $valuee){
										echo '<br>valuee<br>';
										print_r($valuee);
										echo '<br>valuee<br>k<br>';
										print_r($k);
										echo '<br>k<br>k<br>';
																	echo '<tr>';
																	
																			if(is_array($valuee)){
																				
																					$keyk++;
																					
																								if(is_array($valuee)){	
																									foreach($valuee as $titog=>$vitog){
																										
																										echo $keyk.'<br>';
																											if ($keyk === 0){
																											echo "<td><label><input type='text' name='$titog' value='$vitog'>$vitog</td></label>";}
																											else {
																												echo "<td><label><input type='text' name='$titog' value='$vitog'>$titog</td></label>";
																											}
																										
																									}
																									
																									
																									echo "<td><button type=\"button\" class=\"add\">+</button><button type=\"button\" class=\"del\">-</button></td>";
																								}	
																				
																				
																				
																	echo '</tr>';}
																			
													
												
									}			
				}
} else {echo 'session_data не массив';}
?>
										
									</tbody>
								</table>
										<input name="sub" type="submit" style="margin: 10px">
										
								</form>	
							</div>
<script src="dynamicTable.js"></script>
<script>
    new DynamicTable( document.getElementById("dynamic") );
</script>

Последний раз редактировалось mopsusha, 10.01.2018 в 04:03.
Ответить с цитированием
  #2 (permalink)  
Старый 10.01.2018, 03:50
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от mopsusha
name='0[stoimost]', name='1[stoimost]'
И кто такие имена обрабатывать будет?
Ответить с цитированием
  #3 (permalink)  
Старый 10.01.2018, 04:02
Интересующийся
Отправить личное сообщение для mopsusha Посмотреть профиль Найти все сообщения от mopsusha
 
Регистрация: 21.01.2011
Сообщений: 15

Post отправляет в многомерный массив
Вот какой массив хотелось бы получить после вывода
пример
Array ( [0] => Array ( [komnat] => 5 [corpus] => 1 [itaz] => [sobs] => [szhil] => [skuhni] => [otdelka] => [stoimost] => [planirovka] => ) [2] => Array ( [komnat] => 4 [corpus] => 2 [itaz] => [sobs] => [szhil] => [skuhni] => [otdelka] => [stoimost] => [planirovka] => ) [1] => Array ( [komnat] => 4 [corpus] => 3 [itaz] => [sobs] => [szhil] => [skuhni] => [otdelka] => [stoimost] => [planirovka] => ) [sub] => Отправить [view] => item [hidemainmenu] => 1 )
Ответить с цитированием
  #4 (permalink)  
Старый 10.01.2018, 04:04
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Ясно, но если это данные из базы, то почему не привязаны к первичному ключу?
Ответить с цитированием
  #5 (permalink)  
Старый 10.01.2018, 04:18
Интересующийся
Отправить личное сообщение для mopsusha Посмотреть профиль Найти все сообщения от mopsusha
 
Регистрация: 21.01.2011
Сообщений: 15

а как вывести так, чтобы как данные отправились с таким инпутом и выводились? Я видимо что-то не так сделал.
Ответить с цитированием
  #6 (permalink)  
Старый 10.01.2018, 04:22
Интересующийся
Отправить личное сообщение для mopsusha Посмотреть профиль Найти все сообщения от mopsusha
 
Регистрация: 21.01.2011
Сообщений: 15

мне из динамической таблицы вообщем надо отправить данные в mysql и получить их так, чтобы таблица корректно работала. Заранее извините, может где-то туплююююю.
Ответить с цитированием
  #7 (permalink)  
Старый 10.01.2018, 04:31
Интересующийся
Отправить личное сообщение для mopsusha Посмотреть профиль Найти все сообщения от mopsusha
 
Регистрация: 21.01.2011
Сообщений: 15

Создаю пустую динамическую таблицу, заполняю ее, далее отправляю в mysql, далее получаю данные из таблицы, она отрисовывается нормально, но уже третий раз если отправить, то массив получается такой
Array ( [0] => Array ( [komnat] => 5 [corpus] => 1 [itaz] => [sobs] => [szhil] => [skuhni] => [otdelka] => [stoimost] => [planirovka] => ) [komnat] => 4 [corpus] => 3 [itaz] => [sobs] => [szhil] => [skuhni] => [otdelka] => [stoimost] => [planirovka] => [sub] => Отправить [view] => item [hidemainmenu] =>
только с первым ключем '0', остальные не проставляются. А если добавить еще одну строку в таблице, то он не учитывает прорисованные строки и идет с ключем '1'
Ответить с цитированием
  #8 (permalink)  
Старый 10.01.2018, 04:31
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от mopsusha
вообщем надо отправить данные в mysql
Если у вас в коде есть такое $v = unserialize($v), то у вас уже не база, а амбар. Вы можете сказать чему же именно в вашем амбаре данные будут добавляться?
Ответить с цитированием
  #9 (permalink)  
Старый 10.01.2018, 04:34
Интересующийся
Отправить личное сообщение для mopsusha Посмотреть профиль Найти все сообщения от mopsusha
 
Регистрация: 21.01.2011
Сообщений: 15

не понял вопроса
Ответить с цитированием
  #10 (permalink)  
Старый 10.01.2018, 04:54
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от mopsusha
не понял вопроса
Превращать базу просто в свалку для хранения очень плохо да и накладно, храните уж тогда такие наборы в обычном файле.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Загрузка из одного javascript другой javascript (Локально, не на сайте.) Jaguar500070 Общие вопросы Javascript 0 17.07.2015 15:08
Требуется javascript ninja для небольшой задачи Achilles_sm Работа 7 01.07.2015 17:33
перемещение содержимого из поля input в другое поле input при помощи нажатия на кнопк scrapmetal Events/DOM/Window 3 22.03.2015 20:45
Как заменить кнопку на картинку-ссылку в JavaScript? YeSeV Общие вопросы Javascript 0 28.07.2011 11:20
Первый Moscow JavaScript Meetup korenyushkin Общие вопросы Javascript 0 26.07.2011 15:23