Avatar billede dex_dexter Nybegynder
13. februar 2003 - 15:47 Der er 23 kommentarer og
3 løsninger

efter 30 mins send form

jeg er ikke en ørn til javascripting og ved ikke helt hvor jeg skal finde min information henne, men jeg har et relativt simpelt spørgsmål.
jeg skal have en side til at sende en form(ligesom når brugeren trykker på send knappen) efter 30 mins. hvordan gøres det lige?
Avatar billede bearhugx Nybegynder
13. februar 2003 - 15:53 #1
<script type="text/javascript>
function sendForm() {
  var frm = document.getElementById("formen");
  frm.submit();
}

this.setTimeout( sendForm(), 1800000);
</script>

----
din form skal så have ID'en "formen"...

/Søren Munk Skrøder
Avatar billede z42cool Nybegynder
13. februar 2003 - 15:55 #2
<head>
  <script>
    function myFormSubmit()
    {
      document.thisIsTheForm.submit();
    }
  </script>
</head>

<body onload="setTimeout('myFormSubmit();', 1800000);">
  <form id="thisIsTheForm">
  </form>
</body>
Avatar billede dex_dexter Nybegynder
13. februar 2003 - 15:55 #3
ehh... forklar, formens navn oder?
Avatar billede z42cool Nybegynder
13. februar 2003 - 15:56 #4
bearhugx>> setTimeout tager en streng der skal evalueres som 1. parameter, ikke et funktionskald og getElementById understøttes ikke af gamle browsere!
Avatar billede z42cool Nybegynder
13. februar 2003 - 15:57 #5
bearhugx>> Ikke at jeg ikke selv anvender getElementById ofte, men her er det faktisk nemt at lave det så det understøttes af NN4.X og så kan man jo ligeså godt gøre det :-)
Avatar billede bearhugx Nybegynder
13. februar 2003 - 16:11 #6
[advarsel - lad vær med at trykke på F5 ved et uheld! - min side opdaterede og jeg mistede alt, hvad jeg havde skrevet :-(( )

Jeg valgte getElementById() primært fordi det er den måde, som W3C, via deres DOM level 1 anbefaling, foreslår at bruge for at få fat i et dokuments elementer...
at den så "kun" virker for IE5+ og NS6+ ser jeg ikke som det store problem ... Hvis man gerne vil understøtte ældre browsere, så kan man teste på om browseren evt. understøtter getElementById() (altså DOM 1) ...  Og hvis ikke, så kan man foretage sit browserspecifikke krumspring for at få fat i FORM elementet...

At få fat i form-elementet er jo hellerikke essensen i dette spm -- Derimod at bruge setTimeout() --- (og ja - jeg indrømmer at jeg glemte quotes omkring metodenavnet :-))  - Det gik lidt hurtigt...

/Søren
Avatar billede bearhugx Nybegynder
13. februar 2003 - 16:12 #7
Det skal dog lige siges at getElementById også understøttes af andre 'gode' browsere som f.eks. Opera Konquorer og Mozilla...
Avatar billede z42cool Nybegynder
13. februar 2003 - 16:15 #8
Det var nu heller ikke for at starte en krig omkring DOM1 support eller ej, blot for at bemærke at det her faktisk er muligt at lave det så det understøttes selv af browsere uden DOM support og så naturligvis for at gøre opmærksom på at 1. parameter skal være en streng!
Avatar billede z42cool Nybegynder
13. februar 2003 - 16:16 #9
dex_dexter>> Hvis du anvender getElementById, ja så skal det være formens navn, altså:
<head>
  <script>
    function myFormSubmit()
    {
      document.getElementById("thisIsTheForm").submit();
    }
  </script>
</head>

<body onload="setTimeout('myFormSubmit();', 1800000);">
  <form id="thisIsTheForm">
  </form>
</body>

Husk at bruge id attributten på <form> taggen!
Avatar billede bearhugx Nybegynder
13. februar 2003 - 16:22 #10
Jeg har hellerikke i sinde at starten en DOM krig ;-)))

---
dex-dexter >> behøver endda ikke engang at bruge bodys onLoad-event - du kan sætte timeren i hvilken som helst script-blok...

  <script type="text/javascript">
    function sendForm() {
      document.getElementById("frm").submit();
    } 
    this.setTimeout( "sendForm()", 2000);
  </script>
 
  <body> 
    <form id="frm" action="dosomething.asp" method="post"></form>
  </body>
Avatar billede bearhugx Nybegynder
13. februar 2003 - 16:24 #11
ret selvfølgelig 2000 ms til 1800000 ms :-)
Avatar billede z42cool Nybegynder
13. februar 2003 - 16:29 #12
bearhugx>> At bruge onload er bare generelt en god ide idet man sikrer sig at evt. interaktion med elementer er mulig idet man har garanti for at HELE dokumentet er parset og objekter er oprettet i DOM. I dette eksempel kunne man forestille sig at sige:

setTimeout("sendForm();", 1)

og risikere at når det ene millisekund var gået, så ville <form> taggen endnu ikke være parset og scriptet ville fejle. At det så ikke behøves at blive sat deklarativt, men kan blive sat programmatisk som i det følgende er anden sag!

<head>
  <script>
    function myFormSubmit()
    {
      document.getElementById("thisIsTheForm").submit();
    }

    function init()
    {
      setTimeout("myFormSubmit();", 1800000);
    }

    onload = init;

  </script>
</head>

<body>
  <form id="thisIsTheForm">
  </form>
</body>
Avatar billede olebole Juniormester
13. februar 2003 - 18:02 #13
<ole>

z42cool >> Jeg er helt enig i dine betragtninger om ikke at bruge document.getElementById til at adressere en form ... men det kræver så også, at du ikke bruger 'id', men 'name' til identifikation af formen  :)

/mvh
</bole>
Avatar billede olebole Juniormester
13. februar 2003 - 18:17 #14
bearhugx >> W3C anbefaler i øvrigt ikke nogen steder at adressere forms via id ved submission. Derimod anbefaler man i HTML 4.01 rekommendationen at anvende name til scripting.
Bl.a. forms og frames adskiller sig faktisk en anelse fra de fleste andre HTML-elementer ved at have deres egen collection under sidens DOM.
/mvh
Avatar billede bearhugx Nybegynder
13. februar 2003 - 21:31 #15
Tja... min betragtning er så dog, at hvis i forvejen skal bruge id/getElementById() til at få fat i alle andre elementer - hvorfor så ikke også bruge den på en frame (eller omskrevet : tænk generisk, og brug kun specialiserede metoder/fremgangsmåder når det enten ikke er muligt generisk - eller hvis det indvolverer for meget bøvl) - Det er i hvert fald det paradigme, som jeg er blevet skolet (indoktrineret?!? :-)  med ifm. programmering...

At man så kan gøre det via z42cools metode er jeg da fuldstændig klar over - og at den virker - ja, det gør den - Det benægter jeg ikke -- Er det smartere mener jeg så kan diskuteres (men er også klar over at det kan diskuteres herfra og til dommedag (hvis man tror på såd'n noget))

OleBole >>  at bruge id-attribut i stedet for name-attribut siger jeg ikke hellerikke at W3C direkte opfordrer til - det står ikke sort på hvidt før XHTML1-anbefalingen - men hvis man kigger på hvor HTML har bevæget sig henad, så er det den vej det går :
3 eksempler :
  1) Det hedder getElementById() og ikke getElementByName() i DOM 1
  2) i HTML4.01 er det kun følgende elementer, som har name-attribut : a, applet, form, frame, iframe, img, og map
  3) fra XHTML1.0 er name-attribut formelt deprecated

så kan jeg da godt se, at name-attr bruges i HTML4.01-specifikationen mht. frames og forms - personligt synes jeg, jvr. ovenstående, at man ligesågodt kan "male med samme pensel over hele linien" (og name bliver jo aligevel slagtet i den efterfølgende version af HTML)

Men egenligt, så synes jeg at hele diskutionen burde flyttes et andet sted nu (evt. "Fri Debat")- primært fordi jeg ikke tror dex_dexter får særligt meget mere Added Value til det her spørgsmål, ved at vi mundhugges over, om man skal bruge A eller B

/Søren Munk Skrøder
Avatar billede olebole Juniormester
13. februar 2003 - 21:53 #16
Søren ... det er ikke korrekt, hvad du skriver. Du skal kikke under ECMA-bindings under DOM 1. Det er nemlig denne sammenkobling af script og DOM, der i denne sammenhæng er interessant - noget mange glemmer, men som på mange måder er langt vigtigere end 'buzz-fænomenet' XHTML.
Man skal passe på ikke at rode begreberne sammen - og det er fuldstændig legalt (og udmærket kodeskik) at anvende de collections, der ligger i DOM'en.

Skal du f.eks. tilgå i en iframe som HTML-element, kan du godt bruge id.
Skal du derimod tilgå den som et window-objekt (f.eks, hvis du vil tilgå dens location-objekt), kan du ikke - men må tilgå den gennem DOM'ens frames-collection. Prøv f.eks:

<iframe id="ib" name="bo" src="about:blank"></iframe><br>

<button onclick="document.getElementById('ib').location.href='http://www.google.com'">TEST 1</button><br>
<button onclick="document.frames['bo'].location.href='http://www.google.com'">TEST 2</button><br>

Så vil du se, du roder lidt rundt i begrebderne. Det er ikke spor 'finere', bedre eller mere korrekt at anvende document.getElementById i ethvert tilfælde ... det er direkte forkert i nogle situationer.

Man skal passe meget på 'buzz-fænomen-fælder' ... dem er der mange af i branchen  ;o)
/mvh
Avatar billede olebole Juniormester
13. februar 2003 - 21:56 #17
Og nej ... jeg mener ikke, vi bør ikke diskutere dette under Fri Debat. Emnet hører i dén grad hjemme i denne kategori, da det er front-end kodere, der har disse problemer  :)
/mvh
Avatar billede bearhugx Nybegynder
13. februar 2003 - 22:30 #18
Men det er dog muligt via src attributten :
  <button onClick="document.getElementById('ib').src='http://www.google.com'"> TEST ID</button>
:-))
Avatar billede dex_dexter Nybegynder
14. februar 2003 - 07:48 #19
hm... i har satme knald på herinde ;) men godt at se at man stadigt kan starte en snak om ting, også selvom jeg ca forstår 3 indlæg alt i alt af det her ;)
men takker for hjælpen
Avatar billede dex_dexter Nybegynder
14. februar 2003 - 08:00 #20
<head>
  <script>
    function submitnumber()
    {
      document.employee.submit();
    }
  </script>
</head>

<body onload="setTimeout('submitnumber();', 3000);">
  <form id="employee" action="index2.php" method="post">
    <p>Please type your number<br><input type="text" name="emp"></p>
    <p><input type="submit" value="send"></p>
  </form>
</body>


burde da virke right?
Avatar billede olebole Juniormester
14. februar 2003 - 21:53 #21
bearhugx >> undskyld, har haft lidt travlt  :)
Det er ikke det samme at tilgå en iframe's src ... du har stadig ikke fat i iframe'en som window-objekt - og har ikke fat i dettes location-objekt. Dets history-property har du jo f.eks. ikke adgang til. Href'en var blot et eksempel  :)

Der er mange ting, du ikke kan ved at tilgå elementerne på den måde, du anbefaler ... det er derfor, W3C ikke har deprecated de andre metoder, men bruger en hel del plads på at beskrive dem. Man skal bare læse de rigtige dokumenter fra dem  ;o)
/mvh
Avatar billede bearhugx Nybegynder
15. februar 2003 - 01:27 #22
Det har du jo ret i  -- jeg trækker min påstand ... Men er der så ikke tale om en egenlig forglemmelse fra W3C's side, når man så fra XHTML og fremefter bevidst kun kører med id...
Og man kan da godt sige at XHTML er et modefænomen - Men det er jo den vej, som W3C lægger...

Findes der ikke en metode (udfra DOM level 1/2) hvor man kan tilgå de forskellige collections på "metodekalds"-form - og altså ikke via dot-operator.. (håber du forstår, hvad jeg mener...)
det, at refferere noget udfra f.eks. document.frames['ib'] --- tja.. den får mig bare til at tænke på de gamle dage, hvor browserkrigen hærgede...
den gang hvor man enten skulle bekende sig til document.all eller document.layer :-)) --- Det gjorde sgu' det hele så besværligt...
..Det er primært derfor at jeg er "fan" af de nye _ens_ standarder for at tilgå ting....

Den dag, hvor man kan skrive en kode _på én måde_ og den så virker i alle generele brugte browsere... Det er den dag, hvor jeg vil være glad...
Men det verdensbillede er måske ikke lige rundt om hjørnet....

Men indtil da, så vil jeg da gerne vide hvilke dokumenter, du ville foreslå, jeg kigger igennem...

(jeg tror jeg blander JavaScript-DOM og W3C-DOM sammen... Er de to forskellige DOM'er eller er de bare to sider af samme sag... Jeg er lidt forvirret -- Ole, hjælp mig! :-)
/Søren
Avatar billede olebole Juniormester
15. februar 2003 - 02:02 #23
På denne side kan du finde en del udmækede links:
  http://www.w3.org/TR/1998/REC-DOM-Level-1-19981001/
Bl.a. til denne side:
  http://www.w3.org/TR/1998/REC-DOM-Level-1-19981001/ecma-script-language-binding.html

Her er de samme for Leve 2:
  http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/
og:
  http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/ecma-script-binding.html

Her er lidt om den kommende Level 3:
  http://www.w3.org/TR/2002/WD-DOM-Level-3-Core-20021022/

Der er intet, der tyder på, at 'name' bliver deprecated, men da XHTML stadig er en 'baby' er der ingen grund til at bruge det, med mindre man har en rigtig god grund (f.eks. hvis man skriver XML). At være 'med på moden' er en dårlig grund - men desværre den langt mest udbredte  :)

Erstatter du 'name' med 'id' på form-felter er de bare meget pæne på siden ... men ubrugelige til at sende værdier med. Det er jo ikke fedt  :)

'id' bruger man til visse ting - 'name' til andre. Det er muligt, det minder dig om 'gamle dage', men det er en fejlfortolkning  ;o)

Du kan stadig bruge dot-notation i collections: 'document.frames.ib'.

/mvh
Avatar billede dex_dexter Nybegynder
05. marts 2003 - 15:29 #24
svar lige alle sammen
Avatar billede bearhugx Nybegynder
05. marts 2003 - 17:26 #25
^svar^
Avatar billede olebole Juniormester
05. marts 2003 - 18:00 #26
swaaaar  :)
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