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/
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  
  2. <html xmlns="http://www.w3.org/1999/xhtml">  
  3. <head>  
  4. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2" />  
  5. <script src="./scripts/prototype.js" type=""></script>  
  6. <script src="./scripts/scriptaculous.js?loader=builder" type=""></script>  
  7. <title>input fields test</title>  
  8. <script type="text/javascript">  
  9.   
  10.     window.onload = function(){  
  11.         for (var i=0;i<10;i++) $('fooForm').appendChild (Builder.node('input',{id:'test_'+i,name:'test_'+i,type:'text'}));  
  12.     }  
  13.       
  14. </script>  
  15. </head>  
  16. <body>  
  17.     <form id="fooForm" action="test.php" method="post">     
  18.         <input id="fooSubmit" type="submit" value="mehet" />            
  19.     </form>  
  20. </body>  
  21. </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:
  1. <script>  
  2. function addInput()  
  3. {  
  4.     var f = document.getElementById('f');  
  5.     var i = document.createElement('input');  
  6.     i.setAttribute('name''i2');  
  7.     f.appendChild(i);  
  8. }  
  9. </script>  
  10. <a onclick="addInput();">add</a>  
  11. <form method="POST" id="f">  
  12. <input name="i1">  
  13. <input type="submit">  
  14. </form>  
  15. <pre>  
  16. <?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):
  1.       
  2. function createNewInput(element) {  
  3.         var new_input = document.createElement('input');  
  4.          new_input.type = 'file';  
  5.          new_input.name = 'pic' + ++nametag;  
  6.          new_input.id = new_input.name;  
  7.           
  8.         element.parentNode.insertBefore(new_input, element);  
  9. }