Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   не отправляются данные из формы (https://javascript.ru/forum/events/7173-ne-otpravlyayutsya-dannye-iz-formy.html)

tselofun 19.01.2010 10:10

не отправляются данные из формы
 
Добрый день.

У меня в форме новые инпуты добавляются с помощью js, но при сабмите значения этих инпутов не отпарвляются, только 1-го который изначально видно на странице, то есть $_POST содержит artist[0]=TEST, а artist[1] итд нету. Подскажите как решить?

Код:
<?php
print_r($_POST);
?>
<script type="text/javascript">
function addArtist(){
	if (aX==0){
	Element.toggle('RemoveMainArtistButton');
	}
	new Insertion.Bottom('A'+aX, '<input type="text" name="suffix['+aX+']" size="10" value="'+aX+'" />');
	aX++;
	html = '<div id="A'+aX+'"><input type="text" name="artist['+aX+']" size="25" value="'+aX+'" /> ';
	html = html + ' </div>';
	new Insertion.After('A'+(aX-1), html);
	$('A'+aX).childNodes[0].focus();
}

function removeArtist(){
	new Element.remove('A'+aX);
	aX--;
	el=$('A'+aX);
	new Element.remove(el.lastChild);
	if (aX==0){
	Element.toggle('RemoveMainArtistButton');
	}
}
</script>
<form action="" method="post">
	<div id="artists" style="width:100%;">
		<div id="ArtistsLabel" style="display: none"><small>Name / Join</small></div>
		<div id="A0">
			<input type="text" name="artist[0]" size="25" value="TEST" />
		</div>
	</div>
	<script language="javascript">aX = 0;</script>
	<input type="button" value="+" onClick="addArtist();" />
	<input type="button" id="RemoveMainArtistButton" value="x" onClick="removeArtist();" style="display:none" />
</form>

Gozar 19.01.2010 11:06

Цитата:

Сообщение от tselofun (Сообщение 41095)
У меня в форме новые инпуты добавляются

Если бы это было правдой, то у Вас не было бы той проблемы, которую Вы описываете.

tselofun 19.01.2010 11:30

Gozar, спасибо.

Но я после добавлении инпутов сохранял страницу и сомтрел код и там вроде они внутри:
<div id="artists" style="width: 100%;">
		<div id="ArtistsLabel" style="display: none;"><small>Name / Join</small></div>
		<div id="A0">
			<input name="artist[0]" size="25" type="text">
		<input name="suffix[0]" size="10" value="0" type="text"></div>

		<div id="A1">
			<input name="artist[1]" size="25" value="1" type="text">  <input name="suffix[1]" size="10" value="1" type="text">
		</div>

		<div id="A2">
			<input name="artist[2]" size="25" value="2" type="text">  <input name="suffix[2]" size="10" value="2" type="text">
		</div>

	</div>


Или где-то не там смотрю? Подскажите пожалуйста как исправить или где почитать про похожие способы вставки.

Gozar 19.01.2010 12:01

если Вы сможете обратиться к вставленным элементам способом:
form.artist[1].value
//где form ваша форма
, тогда и скажете что вы добавляете элементы к форме

tselofun 19.01.2010 13:22

С тем кодом так и не разобрался, но зато написал свой :D

<php
print_r($_POST);
?>
<form action="" id="add_release" method="post">
	<div id="artists">
		<input type="text" name="artist[0]" value="" />
	</div>
	<br />
	<input id="addb" type="button" value="+" onClick="addArtist();" />
	<input id="delb" type="button" value="x" onClick="removeArtist();" style="visibility:hidden" />
	<br />
	<input type="submit" value="Submit" />
</form>

<script>
num=0

function addArtist(){
	var parent = document.getElementById('artists')
	var child = document.createElement('span')
	child.id = 'a' + num
	child.innerHTML = '<input type="text" name="suffix[' + num + ']" value="" /><br /><input type="text" name="artist[' + ++num + ']" value="" />'
	parent.appendChild(child)
	document.getElementById('delb').style.visibility = "visible"
}

function removeArtist(){
	var childId = 'a' + (num-1)
	var parent = document.getElementById('artists')
	var child = document.getElementById(childId)
	parent.removeChild(child)
	num = num-1
	if(num == 0){
		document.getElementById('delb').style.visibility = "hidden"
	}
}
</script>


Оказывается все эти часы мучений из-за <table><form> вместо <form><table> O_O


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