Avatar billede kimlarsen1978 Nybegynder
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?
Avatar billede roenving Novice
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 !-)
Avatar billede Søren Bech Morsing Praktikant
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
Avatar billede kimlarsen1978 Nybegynder
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?
Avatar billede kimlarsen1978 Nybegynder
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?
Avatar billede roenving Novice
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 ?-)
Avatar billede kimlarsen1978 Nybegynder
13. august 2005 - 11:26 #6
Ja jeg validerer
Avatar billede roenving Novice
13. august 2005 - 11:27 #7
Så kan du jo gøre det samtidig med valideringen, hvordan ser den ud ?-)
Avatar billede kimlarsen1978 Nybegynder
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>
Avatar billede roenving Novice
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>
Avatar billede kimlarsen1978 Nybegynder
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? ;-)
Avatar billede roenving Novice
13. august 2005 - 11:54 #11
99 tegn !-)

Velbekomme '-)
Avatar billede kimlarsen1978 Nybegynder
13. august 2005 - 11:56 #12
:-)
Avatar billede roenving Novice
13. august 2005 - 11:56 #13
-- og tak for point ;~}
Avatar billede kimlarsen1978 Nybegynder
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
Avatar billede roenving Novice
13. august 2005 - 15:44 #15
window.MIN_IFRAME ...
Avatar billede kimlarsen1978 Nybegynder
13. august 2005 - 15:46 #16
nope, det er fortsat undefined :-(
Avatar billede roenving Novice
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]
Avatar billede kimlarsen1978 Nybegynder
13. august 2005 - 15:57 #18
Jeg har lagt en anden udgave af formen i framen men en anden action
Avatar billede roenving Novice
13. august 2005 - 16:02 #19
Argh, jeg har gjort det igen, glemt dokumentet i framen:

var newF = parent.andenIframeName.document.arrangement;
Avatar billede kimlarsen1978 Nybegynder
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
Avatar billede roenving Novice
13. august 2005 - 16:08 #21
var newF = window.form2.document.arrangement; ?-)
Avatar billede kimlarsen1978 Nybegynder
13. august 2005 - 16:11 #22
Den bliver ved med at være undefined
Avatar billede roenving Novice
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] ...
Avatar billede kimlarsen1978 Nybegynder
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
Avatar billede kimlarsen1978 Nybegynder
13. august 2005 - 16:23 #25
prøver lige det du lige har skrevet det har jeg ikke set før nu
Avatar billede kimlarsen1978 Nybegynder
13. august 2005 - 16:25 #26
Object
Object
Undefined
Avatar billede roenving Novice
13. august 2005 - 16:28 #27
Har du et normalt html-dokument i form2.asp ?-)
Avatar billede kimlarsen1978 Nybegynder
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
Avatar billede kimlarsen1978 Nybegynder
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>
Avatar billede roenving Novice
13. august 2005 - 16:38 #30
var newF = window.form2.document.forms[0]; måske ...
Avatar billede kimlarsen1978 Nybegynder
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>
Avatar billede roenving Novice
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 !-)
Avatar billede kimlarsen1978 Nybegynder
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
Avatar billede roenving Novice
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);
      }
    }
Avatar billede kimlarsen1978 Nybegynder
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
Avatar billede kimlarsen1978 Nybegynder
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
Avatar billede kimlarsen1978 Nybegynder
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
Avatar billede kimlarsen1978 Nybegynder
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 :-)
Avatar billede kimlarsen1978 Nybegynder
16. august 2005 - 20:07 #39
Hej igen
Kan du se fejlen? Jeg er snart helt blank :-(
Avatar billede kimlarsen1978 Nybegynder
16. august 2005 - 20:15 #40
Den hopper ud ved i=3 (her rammer den textareaet) og felter.length er = 16
Avatar billede kimlarsen1978 Nybegynder
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
Avatar billede kimlarsen1978 Nybegynder
16. august 2005 - 21:24 #42
Hejsa
Jeg fortsætter men det iframe bøvl her:
- http://www.eksperten.dk/spm/640686
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester