Nou, ik was zelf eigenlijk ook wel benieuwd naar de werking van mijn oplossing, dus heb ik het maar even gebouwd:
localform.html:
code:
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
| <html>
<head>
<script type="text/javascript">
function code_elements(sCodeMethod, sTagName) {
var aElements = document.getElementsByTagName(sTagName);
for(var n = 0; n < aElements.length; n++) {
oElement = aElements[n];
if(oElement.type == "text" || oElement.nodeName == "TEXTAREA") {
if(sCodeMethod == "encode")
oElement.value = escape(oElement.value);
else if(sCodeMethod == "decode") {
oElement.value = unescape(oElement.value);
}
}
}
}
function code_form(sCodeMethod) {
code_elements(sCodeMethod, "INPUT");
code_elements(sCodeMethod, "TEXTAREA");
return true;
}
</script>
</head>
<body onload="code_form('decode')">
<form method="GET" action="bedankt.html" onsubmit="return code_form('encode')">
<input type="text" id="fullname" name="fullname" />
<input type="text" id="emailaddress" name="emailaddress" />
<textarea id="messagebody" name="messagebody"></textarea>
<input type="submit" />
</form>
</body>
</html> |
bedankt.html:
code:
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
| <html>
<head>
<style>
form, iframe {
/*display:none;*/
}
</style>
<script type="text/javascript">
function load() {
var sGet = window.location.search.substr(1);
var aGet = sGet.split("&");
for(var n = 0; n < aGet.length; n++) {
var sGetVar = aGet[n];
var aGetVar = sGetVar.split("=");
var sId = aGetVar[0];
var sValue = unescape(unescape(aGetVar[1]));
oField = document.getElementById(sId);
if(oField != null) {
if(oField.nodeName == "INPUT") {
oField.value = sValue;
}
else if(oField.nodeName == "TEXTAREA") {
var oText = document.createTextNode(sValue);
oField.appendChild(oText);
}
}
}
oForm = document.getElementById("hiddenform");
oForm.submit();
}
</script>
</head>
<body onload="load()">
<iframe id="hiddenframe" name="hiddenframe" src="about:blank"></iframe>
<form id="hiddenform" method="POST" action="http://www.meneer.net/test/post.php" target="hiddenframe">
<input type="text" id="fullname" name="fullname" />
<input type="text" id="emailaddress" name="emailaddress" />
<textarea id="messagebody" name="messagebody"></textarea>
</form>
<hr />
<p>hierboven alles op display:none zetten</p>
<h1>Bedankt!</h1>
</body>
</html> |
het hele zaakje staat ook
hier. Da's dan wel op dezelfde host als waar het formulier uiteindelijk naartoe gepost wordt, maar het werkt ook prima lokaal of vanaf een andere host.
het hele encoding/decoding gebeuren is om te zorgen dat karakters als <spatie> en "+" enz. netjes via een URL naar het tweede formulier overgeluist worden, of als men op bedankt.html twee keer back drukt om weer in het formulier terecht te komen.
ps. ga me nou niet vertellen dat je ook <input type="file" /> dingetjes in je formulier hebt zitten, want dat gaat met deze truuc nooit werken
[
Voor 34% gewijzigd door
Genoil op 16-10-2004 12:05
]