Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Добавление блоков из шаблона с уникальными именами (https://javascript.ru/forum/misc/27352-dobavlenie-blokov-iz-shablona-s-unikalnymi-imenami.html)

wcb-falcon 10.04.2012 16:04

Добавление блоков из шаблона с уникальными именами
 
Появилась задача создать некое описание при этом использовать для этого добавление блоков из шаблонов (текст, фото и т.д.) в которых уже вводить в разрешенные места данные

блок с кнопкой и позицией для добавления
<div id="post_list"></div><a href="javascript:;" class="add_post_list" list="text">Добавить текстовый блок</a>


обработка на jquery
$(document).ready(function(){
// функция генерации числа
			function getrandom(min_random, max_random) {
				var range = max_random - min_random + 1;
				return Math.floor(Math.random()*range) + min_random;
			}
// елемент в который добавляем
			var post_list = $('#post_list');
			var newid = '';
// шаблон добавляемого блока
			var block_post_text = '<label>Описание</label><br /><textarea name="opisanie_text_'+newid+'" rows="5" ></textarea>';
// вызов события при нажатии
			$('.add_post_list').click(function(){
				newid = getrandom(10,1000);
				post_list.append('<div class="post_' + newid + '"></div>');
				if($(this).attr('list')=='text'){
					$('.post_'+newid).append('text').append(block_post_text);
				}
			});
		});


но у меня в добавляемых блоках одинаковые имена :(
помогите пожалуйста доработать

рони 10.04.2012 17:50

wcb-falcon,
Вместо генерации случайного номера , используте счётчик.
var newid = 1;
...  
newid++;

wcb-falcon 10.04.2012 18:14

что с генерацией что с простым увеличение сработало только в том случае когда переменную с шаблоном block_post_text перенес внутрь обработчика $('.add_post_list').click

вопрос в исходном варианте смог решить путем внесения шаблона в функцию
function block_post_text(newid){
	return '<label>Описание</label><br /><textarea name="opisanie_text_'+newid+'" rows="5" ></textarea>';
}

а строку
$('.post_'+newid).append('text').append(block_post _text);
заменил на
$('.post_'+newid).append('text').append(block_post _text(newid));

пока на данный момент это устраивает.
Если есть какой либо более гуманный способ то расскажите.


Часовой пояс GMT +3, время: 23:56.