Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Через append() создается форма, наполняется, но append'иться в div не хочет (https://javascript.ru/forum/jquery/26041-cherez-append-sozdaetsya-forma-napolnyaetsya-no-append%27itsya-v-div-ne-khochet.html)

SkaN 23.02.2012 15:27

Через append() создается форма, наполняется, но append'иться в div не хочет
 
$(document).ready(function() {
	$("button#reduct").click(function() {
		var id = $("span#block_id").text();
		var name = $("h1#block_name").text();
		var text = $("div#block_text").text();
		if ($("span#block_menu").text() == "Этот блок отображается в меню") var menu = 1;
		else var menu = 0;
		$("h1#block_name").remove();
		$("div#block_text").remove();
		$("span#block_menu").remove();
		$(this).remove();
		$("div#content").append($("form#reduct_block"));
		$("form#reduct_block").append("input#name").append("textarea#text").append("input#menu").append("input#submit").append("button#cancel");
		$("input#name").before("<h1>Редактирование блока</h1><br />Имя: ").attr("type", "input").attr("value", name);
		$("textarea#text").before("<br />Текст:<br />").val(text);
		$("input#menu").before("<br />Показывать этот блок в меню? ").attr("type", "checkbox");
		$("input#submit").before("<br />").attr("value", "Сохранить").attr("method", "post").attr("action", "?id=block&block="+id+"&act=reduct");
		$("button#cancel").attr("type", "submit").append("Отмена");
	});
});


функция должна из некоторых элементов вытаскивать значения, эти элементы потом удалять, создать и отредактировать на фоне форму и вставить ее на место удаленных элементов. но на удалении элементов видимый результат заканчивается. может, конечно, форма на фоне создается, но по крайней мере она уж точно не вставляется. но если вставить, например, alert("test") в конец функции, то он выскочит, значит где-то я накосячил, скорее всего. не подскажете, в чем может быть проблема?..

DjDiablo 23.02.2012 16:52

первый раз вижу такую запись
append("input#name")

думаю вам нужно
append($("input#name"));

SkaN 23.02.2012 17:36

$("form#reduct_block").append($("input#name")).append($("textarea#text")).append($("input#menu")).append($("input#submit")).append($("button#cancel"));
$("input#name").before("<h1>Редактирование блока</h1><br />Имя: ").attr("type", "input").attr("value", name);
$("textarea#text").before("<br />Текст:<br />").val(text);
$("input#menu").before("<br />Показывать этот блок в меню? ").attr("type", "checkbox");
$("input#submit").before("<br />").attr("value", "Сохранить").attr("method", "post").attr("action", "?id=block&block="+id+"&act=reduct");
$("button#cancel").attr("type", "submit").append("Отмена");
$("div#content").append($("form#reduct_block"));

теперь так, но все равно эффект тот же

DjDiablo 23.02.2012 19:18

по моему первую строчку ещё можно вот так укоротить $("form#reduct_block").append($("input#name, textarea#text, input#menu"))

А вообще вы уверены что форму стоит переносить, а не проще ли её тупо создать заново там где вам угодно. А то у вас до попы изменений в этой форме. Ума немогу приложить чем оправдана такая сложная и бессмысленная метаморфоза.

что касается ошибки вряд ли её можно определить на форуме без исходного html хотя бы.

SkaN 24.02.2012 12:17

Цитата:

Сообщение от DjDiablo
А вообще вы уверены что форму стоит переносить

так я ее заново создаю, ее не было нигде.
исходный HTML:
<div id="content" name="content">
<span id="block_id" name="block_id" hidden>Block ID</span><h1 id="block_name" name="block_text">Block name</h1>
<div id="block_text" name="block_text">Block content</div>
<span id="block_menu" name="block_menu">Этот блок отображается в меню</span><br />
<button id="reduct" name="reduct">Редактировать</button>

SkaN 26.02.2012 16:30

Действительно, все это делалось как-то кривовато. Я решил по-другому и проблема отпала сама собой...)


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