Toon posts:

Javascript: Cookie om dubbelinvoer te voorkomen(?)

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hallo mensen,

Voor mijn werk heb ik op onze Domino-server een enquete- formulier ontworpen.
Om dubbelinvoer te voorkomen heb ik via Javascript code (cookie) toegevoegd.
Deze heb ik zelf niet gemaakt, maar op javascript.internet.com gevonden.

Deze code heeft prima gewerkt. Als je nog eenmaal de vragenlijst wilde invoeren kwam deze netjes met de melding dat het maar 1 keer mogelijk is.
Echter, nu plots, werkt het niet meer. Terwijl ik niets meer in de code heb gewijzigd
Hij zegt "Deze eigenschap of methode wordt niet ondersteund door dit object"
De regelverwijzing die hij er bij geeft is op de 2e regel al:
var exp = new Date()

Iemand enig idee wat dit kan veroorzaken. Ik ben zelf niet zo thuis in Javascript :?

De volledige code is als volgt:

Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
var expDays = 30;
var exp = new Date(); 
exp.setTime(exp.getTime() + (expDays*24*60*60*1000));

function getCookieVal (offset) {  
var endstr = document.cookie.indexOf (";", offset);  
if (endstr == -1)    
endstr = document.cookie.length;  
return unescape(document.cookie.substring(offset, endstr));
}
function GetCookie (name) {  
var arg = name + "=";  
var alen = arg.length;  
var clen = document.cookie.length;  
var i = 0;  
while (i < clen) {    
var j = i + alen;    
if (document.cookie.substring(i, j) == arg)      
return getCookieVal (j);    
i = document.cookie.indexOf(" ", i) + 1;    
if (i == 0) break;   
}  
return null;
}
function SetCookie (name, value) {  
var argv = SetCookie.arguments;  
var argc = SetCookie.arguments.length;  
var expires = (argc > 2) ? argv[2] : null;  
var path = (argc > 3) ? argv[3] : null;  
var domain = (argc > 4) ? argv[4] : null;  
var secure = (argc > 5) ? argv[5] : false;  
document.cookie = name + "=" + escape (value) + 
((expires == null) ? "" : ("; expires=" + expires.toGMTString())) + 
((path == null) ? "" : ("; path=" + path)) +  
((domain == null) ? "" : ("; domain=" + domain)) +    
((secure == true) ? "; secure" : "");
}
function DeleteCookie (name) {  
var exp = new Date();  
exp.setTime (exp.getTime() - 1);  
var cval = GetCookie (name);  
document.cookie = name + "=" + cval + "; expires=" + exp.toGMTString();
}

var revisit = GetCookie('revisit');
if (revisit == null) {
SetCookie('revisit', 1, exp);
submit();
}
else {
alert("U kunt deze vragenlijst maar éénmaal invullen en versturen");
window.close();
}

[ Voor 13% gewijzigd door McVirusS op 18-03-2003 14:51 . Reden: Kleurtjes toegevoegd ;) ]


  • Willem
  • Registratie: Februari 2001
  • Laatst online: 02:05
Doe ons een plezier en plaats even [ code ] en [ /code ] * haken om je code heen, dat maakt 't geheel veel leesbaarder :)


(* zonder spaties dus)

Motor (of auto) onderhoud bijhouden


Verwijderd

Datum velden zijn altijd tricky. Misschien gebruik je zelf long datetime terwijl de server short datetime gebruikt? Ik heb verder ook niet veel verstand van javascript hoor.

  • SchizoDuckie
  • Registratie: April 2001
  • Laatst online: 18-02-2025

SchizoDuckie

Kwaak

waarom zet je niet in je onsubmit je submit button op disabled? klaar toch?

Stop uploading passwords to Github!


Verwijderd

Topicstarter
ehm, ik maak geen gebruik van codes in onsubmit in dit geval(?). De code die ik daar geplakt heb zit onder een button waar men op klikt als ze de vragenlijst hebben ingevuld en willen verzenden. Dan wordt de cookie ook geplaatst.
Maar volgende maand ga ik op Domino-cursus, dan weet ik er meer van hoop ik :D

Over long en short date. Volgens mij maakt dat niet uit met Javasscript. Dat wordt sowieso op client-side uitgevoerd. De server komt er pas bij kijken als het document in de database wordt gesubmit.

  • McVirusS
  • Registratie: Januari 2000
  • Laatst online: 21-08 10:46
Wat Papa Eend bedoelt is dat zodra je op de submit button hebt gedrukt je deze uitschakelt zodat mensen er niet nog een keer op kunnen klikken (om dubbelPOST te voorkomen).

Klein voorbeeldje:

HTML:
1
2
3
4
<form method="post" action="post.php" name="frm" onsubmit="this.elements['submitButton'].disabled = true;">
<input type="text" name="waarde" value="zomaar een veld">
<input type="submit" name="submitButton" value="Versturen">
</form>


Zodra je nu op "versturen"-knop drukt wordt deze grijs en niet meer aanklikbaar (uitgeschakelt zeg maar), zodat er niet nog een keer op wordt gedrukt. Let echter wel op; disabled elementen worden niet meegestuurd.

Is wellicht ook iets om aan jouw formulier toe te voegen, ook al was dat niet je oorspronkelijke probleem :).

[ Voor 4% gewijzigd door McVirusS op 18-03-2003 14:49 ]


  • McVirusS
  • Registratie: Januari 2000
  • Laatst online: 21-08 10:46
Ik heb overigens je eerste post even aangepast zodat je kleurtjes heb in je code, is weer wat duidelijker (kon jij ook niet weten ;)).

Verwijderd

Topicstarter
Ahzo, idd dat is een mogelijkheid. Bedankt!

Echter aangezien het geheel op een LotusDomino Server draait werkt het net iets anders. Maar het is wel mogelijk!
Als men op de knop klikt, krijgt men een bedankt schermpje en redirect naar de hoofdpag. van het intranet. Echter dat belet ze niet om op een ander moment in het menu weer naar de sectie te bladeren en de lijst opnieuw in te vullen.
Of blijft de knop dan nog steeds grijs?
IP wordt ook geregistreerd dus evt. dubbelposts haal ik er wel uit, maar das wat omslachtiger om ze zo handmatig te controleren...
McVirusS schreef op 18 maart 2003 @ 14:49:
Wat Papa Eend bedoelt is dat zodra je op de submit button hebt gedrukt je deze uitschakelt zodat mensen er niet nog een keer op kunnen klikken (om dubbelPOST te voorkomen).

Klein voorbeeldje:

HTML:
1
2
3
4
<form method="post" action="post.php" name="frm" onsubmit="this.elements['submitButton'].disabled = true;">
<input type="text" name="waarde" value="zomaar een veld">
<input type="submit" name="submitButton" value="Versturen">
</form>


Zodra je nu op "versturen"-knop drukt wordt deze grijs en niet meer aanklikbaar (uitgeschakelt zeg maar), zodat er niet nog een keer op wordt gedrukt. Let echter wel op; disabled elementen worden niet meegestuurd.

Is wellicht ook iets om aan jouw formulier toe te voegen, ook al was dat niet je oorspronkelijke probleem :).

  • McVirusS
  • Registratie: Januari 2000
  • Laatst online: 21-08 10:46
Verwijderd schreef op 18 March 2003 @ 15:00:
Ahzo, idd dat is een mogelijkheid. Bedankt!

Echter aangezien het geheel op een LotusDomino Server draait werkt het net iets anders. Maar het is wel mogelijk!
Als men op de knop klikt, krijgt men een bedankt schermpje en redirect naar de hoofdpag. van het intranet. Echter dat belet ze niet om op een ander moment in het menu weer naar de sectie te bladeren en de lijst opnieuw in te vullen.
Of blijft de knop dan nog steeds grijs?
IP wordt ook geregistreerd dus evt. dubbelposts haal ik er wel uit, maar das wat omslachtiger om ze zo handmatig te controleren...


Waarom zet je na submitten dan niet gewoon cookie en als mensen dan naar dat formulier surfen laat je andere pagina zien als cookie al bestaat. (Is ook minder verwarrend)

Ik heb echter totaal geen ervaring met Lotus Domino en weet dus niet hoe scripting taal die daar achter zit werkt :). Maar als het een webscripting taal is dan kan je vast wel iets met cookies doen :).

[ Voor 5% gewijzigd door McVirusS op 18-03-2003 15:03 ]

Pagina: 1