ugrás a tartalomhoz

createElement-tel épített űrlap adatok továbbküldése

winston · 2006. Nov. 1. (Sze), 20.19
szia mindenki!

javascript guruktól kérdezném, hogy ha createElement-tel létrehozok egy input mezőt, (ez a rész biztos, hogy működik, oldalon megjelenik, DOM inspector látja) és utána submit-tal elküldöm (mind post mint get esetén), akkor azt miért nem küldi el? (ez már PHP rész, de a PHP nézi azt, hogy a POST tömbben van e küldve az input) mi lehet ennek az oka? milyen megoldás létezik rá?

előre is kösz!
winston
 
1

re

toxin · 2006. Nov. 1. (Sze), 20.37
lapgeneráláskor (eredeti) tegyél a form-ba hidden field-eket, és azokat töltsd fel adott form-ra kötött onsubmit eseményre, azaz még elpost-olás előtt, magyarán generált mezők tartalmát, töltsd át nem generált mezőkbe

üdv t

ui: nem próbáltam, csak egyszer elkezdtem kiguglizni mert érdekelt engem is (addig jutottam ameddig te, aztán gugli, és a fenti módszert találtam elsőre)
2

rere

winston · 2006. Nov. 1. (Sze), 20.43
kösz, ez jó ötlet. azt biztos elküldi, aztán majd a php szétválogatja. te sokat dolgoztál ilyennel (kertészet, ha jól emlékszem), ez csak így megy? tehát nem az aktuális dom-fában levő dolgokat küldi el, hanem az alapján, amit a szervertől kapott? vagy valahogy lehet kényszeríteni?
3

rerere

toxin · 2006. Nov. 1. (Sze), 20.44
lásd fent ui :)
4

ui

winston · 2006. Nov. 1. (Sze), 20.48
kösz, előbb még nem volt ui :) igen, én meg az egész php részt felboncoltam (volt egy jó kör, fél nap), mert azt hittem, ott a gond. aztán miután állandóan notice-t dobott arra, hogy nincsen olyan index a POST tömbben, és már minden ki volt belőle szedve, és egy az egybe beleírtam, ami kéne neki, elkezdtem gyanakodni a js-re... :)
5

Elküldi

attlad · 2006. Nov. 1. (Sze), 21.02
Nekem elküldi. Adtál új input elemnek name attribútumot?
6

sirály, hogymiknemvannak

toxin · 2006. Nov. 1. (Sze), 21.23
hiába mindig van valami új, és köszi :)

üdv t
7

share

Anonymous · 2006. Nov. 1. (Sze), 21.24
Nekem is ez a probléma aktuális, némi guglizást megspórolnál nekem ha ide vonatkozó kódrészletet (js-t is) feldobnád ide.
thx
8

re

toxin · 2006. Nov. 1. (Sze), 21.27
http://toxin.hu/weblabor/input/

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2" />
<script src="./scripts/prototype.js" type=""></script>
<script src="./scripts/scriptaculous.js?loader=builder" type=""></script>
<title>input fields test</title>
<script type="text/javascript">

	window.onload = function(){
		for (var i=0;i<10;i++) $('fooForm').appendChild (Builder.node('input',{id:'test_'+i,name:'test_'+i,type:'text'}));
	}
	
</script>
</head>
<body>
	<form id="fooForm" action="test.php" method="post">	
		<input id="fooSubmit" type="submit" value="mehet" />			
	</form>
</body>
</html>
php-ba sima print_r($_POST);

üdv t
9

Kód

attlad · 2006. Nov. 1. (Sze), 21.42
Ezzel a minimál kóddal teszteltem, kicsit ronda szegény:

<script>
function addInput()
{
	var f = document.getElementById('f');
	var i = document.createElement('input');
	i.setAttribute('name', 'i2');
	f.appendChild(i);
}
</script>
<a onclick="addInput();">add</a>
<form method="POST" id="f">
<input name="i1">
<input type="submit">
</form>
<pre>
<?php print_r($_POST); ?>
10

name

winston · 2006. Nov. 1. (Sze), 21.54
igen, adtam neki, de nem küldte el. először én is arra gondoltam. de majd azért megpróbálom a lenti kódokat, mert úgy nem kell újraírni a php oldali feldolgozást.
11

form

Anonymous · 2006. Nov. 2. (Cs), 08.55
Én a form-ot is létrehozom createElement-tel, és gyerekként beleteszem az input mezőt, így simán elküldi.
Ha csak az input mezőket kellene szaporítanom, akkor is megpróbálnán a létező form alá teeni (nem tudom, Te hova teszed), csak egy tipp.

N0r3i
12

ie - ffx

Shitty · 2007. Feb. 4. (V), 23.35
Máshogy működik a dolog ie-ben meg firefoxban.
Az ie elpostolja az appendelt childot, a firefox nem. erre kellene valami megoldás.
Mert pl bővithető input számnál nem megoldás a hidden, mert mennyit tegyen bele az ember.
14

Kód?

attlad · 2007. Feb. 5. (H), 13.04
Tudsz írni példakódot arra ami nálad nem működik? A #9 példa nálam megy FF-ban.
13

insertBefore() talán menne?

Csiszár Attila · 2007. Feb. 5. (H), 12.21
Talán próbáld ki az insertBefore()-t, ugyanazt csinalja, mint az appendChild(), persze ez egy elem elé szúr be, de könnyen ugyanolyan hatást lehet elérni, mint appendChild-al.

Nálam ez működött! Több képet akartam egyszerre feltölteni, csak ugye egyszerre egyet lehet kijelölni, több file input meg ronda lett volna, ezért mindig létrehoztam egyet kijelöléskor a régit meg eltüntettem.

A PHP minden gond nélkül feldolgozta a dolgot.
Kb így néz ki a kód (kivettem a felesleges részeket):
	
function createNewInput(element) {
		var new_input = document.createElement('input');
		 new_input.type = 'file';
		 new_input.name = 'pic' + ++nametag;
		 new_input.id = new_input.name;
		
		element.parentNode.insertBefore(new_input, element);
}