13. august 2005 - 11:11
Der er
41 kommentarer og 1 løsning
Submit form til 2 sider
Hejsa
Er det muligt at få en FORM til at submitte til 2 sider?
Jeg vil nemlig gerne kunne udføre handlinger på 2 forskellige databaser ud fra formensindhold og databaserne ligge ikke i samme webhome.
action1 =
http://www.xxx.dk/modtagerside.asp action2 =
http://www.yyy.dk/modtagerside.asp Nogle der ved hvordan?
Annonceindlæg fra Lenovo
13. august 2005 - 11:13
#1
Det kan du ikke ... -- men hvis du nu lægger den i en iframe, laver en kopiaf den, som ligger i en anden (skjult ?-) iframe, så kan du submitte begge !-)
13. august 2005 - 11:15
#2
sumibt til xxx først og når den er submittet submit så til yyy (evt. blot querystring) eller også noget javascript der submitter formen automatisk på xxx
13. august 2005 - 11:18
#3
Ja, men brugeren taster jo kun værdier ind i den ene - hvordan får jeg så værdierne kopieret over i den "skjulte"? Kan dette lade sig gøre: ... at onSubmit på den form som brugeren kan se kalder noget javascript som kopierer værdierne over i den skjulte og submitter denne?
13. august 2005 - 11:19
#4
Kan det evt. lades dynamisk så javascriptet selv opretter den skjulte form ud fra de værdier og felter der er den synlige?
13. august 2005 - 11:23
#5
Det nemmeste er at du indlæser begge formularer, og så onsubmit migrerer data til den skjulte og afsender den !-) -- validerer du bruger-indtastningen ?-)
13. august 2005 - 11:26
#6
Ja jeg validerer
13. august 2005 - 11:27
#7
Så kan du jo gøre det samtidig med valideringen, hvordan ser den ud ?-)
13. august 2005 - 11:31
#8
Det er lige ud af landevejen... <script LANGUAGE="JavaScript"> function ValArrangement() { arrangementnavn = document.arrangement.arrangementnavn.value if (arrangementnavn == "" ) { alert("Angiv venligst et arrangementnavn."); document.arrangement.arrangementnavn.focus(); return false; } arrangor = document.arrangement.arrangor.value if (arrangor == "" ) { alert("Angiv venligst navnet på arrangøren."); document.arrangement.arrangor.focus(); return false; } if (!document.arrangement.Nej.checked && !document.arrangement.Man.checked && !document.arrangement.Tir.checked && !document.arrangement.Ons.checked && !document.arrangement.Tor.checked && !document.arrangement.Fre.checked && !document.arrangement.Lor.checked && !document.arrangement.Son.checked) { alert("Angiv venligst om arrangementet foregår på bestemte ugedage."); document.arrangement.Nej.focus(); return false; } lokalomraade = document.arrangement.lokalomraade.value if (lokalomraade == "0" ) { alert("Angiv venligst område."); document.arrangement.lokalomraade.focus(); return false; } kategori = document.arrangement.kategori.value if (kategori == "0" ) { alert("Angiv venligst en kategori."); document.arrangement.kategori.focus(); return false; } Tekst = document.arrangement.Tekst.value if (Tekst == "" ) { alert("Angiv venligst en beskrivelse på MAX 500 tegn."); document.arrangement.Tekst.focus(); return false; } if (Tekst.length > 401) { alert("Angiv venligst en beskrivelse på MAX 500 tegn."); document.arrangement.Tekst.focus(); return false; } return true; } </script>
13. august 2005 - 11:45
#9
For lige at gøre det anelse mere overskueligt, så ændr dit form-tag til: <form ... onsubmit="ValArrangement(this)"> <script type="text/javascript"> function ValArrangement(f) { if (f.arrangementnavn.value == "" ) { alert("Angiv venligst et arrangementnavn."); f.arrangementnavn.focus(); return false; } if (f.arrangor.value == "" ) { alert("Angiv venligst navnet på arrangøren."); f.arrangor.focus(); return false; } if (!f.Nej.checked && !f.Man.checked && !f.Tir.checked && !f.Ons.checked && !f.Tor.checked && !f.Fre.checked && !f.Lor.checked && !f.Son.checked) { alert("Angiv venligst om arrangementet foregår på bestemte ugedage."); f.Nej.focus(); return false; } if (f.lokalomraade.value == "0" ) { alert("Angiv venligst område."); f.lokalomraade.focus(); return false; } if (f.kategori.value == "0" ) { alert("Angiv venligst en kategori."); f.kategori.focus(); return false; } if (f.Tekst.value == "" ) { alert("Angiv venligst en beskrivelse på MAX 500 tegn."); f.Tekst.focus(); return false; } if (f.Tekst.value.length > 401) {//Hvorfor står der 401, når du skriver max. 500 ?-) alert("Angiv venligst en beskrivelse på MAX 500 tegn."); f.Tekst.focus(); return false; } //Her er logikken til kopiering af data indføjet //Husk at rette iframe-navn, formen kan bare hedde det samme !-) var newF = parent.andenIframeName.arrangement; var felter = f.elements; for(i=0;felter.length>i;i++){ if(felter[i].type == 'checkbox' || felter[i].type == 'radio') newF.elements[felter[i].name].checked = felter[i].checked; else if(felter[i].type == 'text' || felter[i].type == 'hidden' || felter[i].type == 'password' || felter[i].type == 'textarea') newF.elements[felter[i].name].value = felter[i].value; } newF.submit(); //Kopiering og submit slut return true; } </script>
13. august 2005 - 11:52
#10
Tak for hjælpen jeg tror jeg kan tage den herfra ellers vender jeg tilbage :-) svar? 401 eller 500 hvad er forskellen? ;-)
13. august 2005 - 11:54
#11
99 tegn !-) Velbekomme '-)
13. august 2005 - 11:56
#12
:-)
13. august 2005 - 11:56
#13
-- og tak for point ;~}
13. august 2005 - 15:36
#14
Hmm, jeg kan sgu ikke fange min form nummer 2... Jeg har den liggende i en iframe på siden var newF = document.all.MIN_IFRAME.arrangement; men newF er undefined, jeg har prøvet en masse forskelligt nu
13. august 2005 - 15:44
#15
window.MIN_IFRAME ...
13. august 2005 - 15:46
#16
nope, det er fortsat undefined :-(
13. august 2005 - 15:54
#17
Har du det i en iframe inde i hoveddokumentet, hvor formen ellers ligger ?-) -- og har du indlæst en anden udgave af formen i iframen, hvor den eneste forskel er action ?o]
13. august 2005 - 15:57
#18
Jeg har lagt en anden udgave af formen i framen men en anden action
13. august 2005 - 16:02
#19
Argh, jeg har gjort det igen, glemt dokumentet i framen: var newF = parent.andenIframeName.document.arrangement;
13. august 2005 - 16:06
#20
Det vil altså bare ikke som jeg vil :-( På siden med formen, den som bliver valideret har jeg indsat dette <IFRAME name="form2" scr="form2.asp" frameBorder="0" width="0" height="0" scrollbar="transperant"> </IFRAME> på form2.asp ligger den så en kopi af formen som har en ny action
13. august 2005 - 16:08
#21
var newF = window.form2.document.arrangement; ?-)
13. august 2005 - 16:11
#22
Den bliver ved med at være undefined
13. august 2005 - 16:22
#23
Langsom debugging: alert(window.form2+"\n"+window.form2.document+"\n"+window.form2.document.arrangement); -- skulle give 3 gange [object] ...
13. august 2005 - 16:22
#24
Den kan godt finde iframen var newF = window.form2; så får jeg et objekt ud, men jeg kan bare ikke komme frem til formen inde i det dokuemnt der ligger i iframen
13. august 2005 - 16:23
#25
prøver lige det du lige har skrevet det har jeg ikke set før nu
13. august 2005 - 16:25
#26
Object Object Undefined
13. august 2005 - 16:28
#27
Har du et normalt html-dokument i form2.asp ?-)
13. august 2005 - 16:31
#28
jeg har godt nok kun <form>....</form>, det kan da være det er det der er galt, jeg sætter lige nogle tags ind
13. august 2005 - 16:33
#29
Det hjalp ikke :-(
form2.asp ser således ud:
******************
<html>
<head>
</head>
<body>
<form method="POST" action="
http://www.yyyy.dk/arrangement.asp" id="arrangement" name="arrangement">
<input type="Text" name="arrangementnavn" size="31">
<input type="Text" name="arrangor" size="31" value="">
<input type="Text" name="arrangementStart" size="14" readonly value="">
<input type="Text" name="tid" size="10">
<textarea cols="50" name="Tekst" rows="9"></textarea>
<input type="Text" name="arrangementSlut" size="14" readonly value="">
<input type="checkbox" name="Nej" value="nej">
<input type="checkbox" name="Man" value="Mandag">
<input type="checkbox" name="Tir" value="Tirsdag">
<input type="checkbox" name="Ons" value="Onsdag">
<input type="checkbox" name="Tor" value="Torsdag">
<input type="checkbox" name="Fre" value="Fredag">
<input type="checkbox" name="Lor" value="Lørdag">
<input type="checkbox" name="Son" value="Søndag">
</form>
</body>
</html>
13. august 2005 - 16:38
#30
var newF = window.form2.document.forms[0]; måske ...
13. august 2005 - 16:40
#31
:-(
Kan det hjælpe hvis jeg nu laver iframen lidt om så den ikke tager et ducuemnt ind
**************
<IFRAME name="form2" frameBorder="0" width="0" height="0" scrollbar="transperant">
<html>
<head>
</head>
<body>
<form method="POST" action="
http://www.yyyy.dk/arrangement.asp" id="arrangement" name="arrangement">
<input type="Text" name="arrangementnavn" size="31">
<input type="Text" name="arrangor" size="31" value="">
<input type="Text" name="arrangementStart" size="14" readonly value="">
<input type="Text" name="tid" size="10">
<textarea cols="50" name="Tekst" rows="9"></textarea>
<input type="Text" name="arrangementSlut" size="14" readonly value="">
<input type="checkbox" name="Nej" value="nej">
<input type="checkbox" name="Man" value="Mandag">
<input type="checkbox" name="Tir" value="Tirsdag">
<input type="checkbox" name="Ons" value="Onsdag">
<input type="checkbox" name="Tor" value="Torsdag">
<input type="checkbox" name="Fre" value="Fredag">
<input type="checkbox" name="Lor" value="Lørdag">
<input type="checkbox" name="Son" value="Søndag">
</form>
</body>
</html>
</iframe>
13. august 2005 - 16:49
#32
Sådan kan man ikke gøre, for det, der står mellem iframe-tags vises, hvis ikke browseren understøtter iframes (hvilket alle nutidige gør !-)
16. august 2005 - 17:40
#33
Hmm Jeg har kigget lidt videre på det her og jeg kan se at kopieringen af mit textarea fejler. Når den kommer til textarea'et så sker der ikke noget???? Det er i dette stykke kode det "fejler" ************* for(i=0;felter.length>i;i++){ if(felter[i].type == 'checkbox' || felter[i].type == 'radio') newF.elements[felter[i].name].checked = felter[i].checked; else if(felter[i].type == 'text' || felter[i].type == 'hidden' || felter[i].type == 'password' || felter[i].type == 'textarea') newF.elements[felter[i].name].value = felter[i].value; } ************ værdien i dette element: ************* <textarea type="textarea" cols="50" name="Tekst" rows="9"></textarea> ************* kan den ikke få fat i og kopiere, jeg har også forsøgt med: ************** <textarea cols="50" name="Tekst" rows="9"></textarea> ************** men det virkede heller ikke
16. august 2005 - 17:45
#34
Det forstår jeg ikke ?-) -- textareaet ligger også inde i formen, ikke ?o] -- iøvrigt behøver et textarea ikke have en type-attribut, men jeg tror heller ikke den kan skade ... -- hvad siger den, hvis du debugger langsomt: for(i=0;felter.length>i;i++){ if(felter[i].type == 'checkbox' || felter[i].type == 'radio') newF.elements[felter[i].name].checked = felter[i].checked; else if(felter[i].type == 'text' || felter[i].type == 'hidden' || felter[i].type == 'password' || felter[i].type == 'textarea'){ newF.elements[felter[i].name].value = felter[i].value; alert(felter[i].name); } }
16. august 2005 - 17:48
#35
Koden kører jo i valideringen af den anden form husker du nok, det der sker er at når den skal til at kopiere textareat så sker der ikke noget og (ingen alert) og den submitter bare form1
16. august 2005 - 17:50
#36
var felter = f.elements; alert(felter.length); for(i=0;felter.length>i;i++){ if(felter[i].type == 'checkbox' || felter[i].type == 'radio'){ newF.elements[felter[i].name].checked = felter[i].checked; } else if(felter[i].type == 'text' || felter[i].type == 'hidden' || felter[i].type == 'password' || felter[i].type == 'textarea'){ alert(felter[i].name); newF.elements[felter[i].name].value = felter[i].value; alert(felter[i].value); } } alert("2"); //NÅR ALDRIG AT BLIVE KALDT newF.submit(); //NÅR ALDRIG AT BLIVE KALDT alert("3"); //NÅR ALDRIG AT BLIVE KALDT //Kopiering
16. august 2005 - 17:51
#37
i "else if" delen køren den "alert(felter[i].name);" indtil den kommer til textareat så submitter den bare form1
16. august 2005 - 17:54
#38
Jeg bliver lige nødt til at smutte i et par timer, men jeg skulle være online igen i aften så går jeg videre med det... Håber du i mellemtiden lige kan se hvad der er galt :-)
16. august 2005 - 20:07
#39
Hej igen Kan du se fejlen? Jeg er snart helt blank :-(
16. august 2005 - 20:15
#40
Den hopper ud ved i=3 (her rammer den textareaet) og felter.length er = 16
16. august 2005 - 20:31
#41
Så tror jeg sgu jeg fandt fejlen :-) Det var ikke textareaet, det var fordi der var felter i formen som ikke var i kopien (for jeg skulle ikke bruge dem)... Så derfor ******************* var felter = f.elements; for(i=0;felter.length>i;i++){ if(felter[i].type == 'checkbox' || felter[i].type == 'radio'){ if (typeof(newF.elements[felter[i].name]) != "undefined"){ newF.elements[felter[i].name].checked = felter[i].checked; } } else if(felter[i].type == 'text' || felter[i].type == 'hidden' || felter[i].type == 'password' || felter[i].type == 'textarea'){ if (typeof(newF.elements[felter[i].name])!="undefined"){ newF.elements[felter[i].name].value = felter[i].value; } } } newF.submit(); //Kopiering
Vi tilbyder markedets bedste kurser inden for webudvikling