Hejsan!
Jag har sökt igenom lite, men inte hittat något som jag var ute efter.
Detta är säkert väldigt enkelt, men inte hittat ännu... så hoppas att
någon där ute kan hjälpa mig.... :)
Jag vill som rubriken tyder... Spara ett formulär...
T.ex.
<form name="form1" method="post" action="...">
<input type="text" name="1">
<input type="text" name="2">
<textarea name="3"></textarea>
<input type="submit">
</form>
<form name="form2" method="post" action="...">
<input type="text" name="yeahyeah">
<input type="submit">
</form>
värdena i form1 vill jag behålla, medans
jag kanske fifflar med form2.. så när jag
submittat form2 så vill jag att värdena i
form1 stannar kvar....
tänkte först kombinera något js-script
med sessions i asp, men finns säkert något
smidigare i javascript rakt av...
vet att man hämtar ut value med doc......
.value etc.... men vet inte hur man skall
sätta ihop det.
tacksam för svar!
Peter SMedlem sedan dec. 20025 483 inlägg Tjena! :)
Ett sätt kan vara att ange ett popupfönster eller en dold <iframe> i target-attributet. Då förblir det formulär som inte skickas intakt vid submit av det andra.
Annars, när det ena formuläret skickas kan värdena för det andra bifogas i frågesträngen. Dessa kan du sedan plocka ut med exempelvis spangos skript på sidan som angivits i action.
hum... har kollat lite på spangos script, men
förstår inte hur man skall använda det i mitt fall.. :)
man måste ju först trixa in värdet från formuläret till en sådan "querystring"...
och sen i och med querystringen hämta ut den i textarea..
att hämta ut den i textarea etc antar jag att man kan göra så här:
<textarea name="tjohopp"><script>"+qs.get("filnamn")+"</script></textarea>
eller? :)
lite vilsen i skogen! ...någon som har en ficklampa? ;)
Peter SMedlem sedan dec. 20025 483 inlägg Så här skulle det kunna se ut:
<form name="form1" method="post" action="foo.html" onsubmit="attachFormValues(this, 'form2')">
...
</form>
<form name="form2" method="post" action="foo.html" onsubmit="attachFormValues(this, 'form1')">
...
</form>
<script type="text/javascript">
function attachFormValues(f, fn)
{
var elms = document.forms[fn].elements,
len = elms.length,
first = true;
for (var i = 0; i < len; ++i){
if (/^(?:textarea|hidden)$/i.test(elms[i].nodeName)){
if (elms[i].value.replace(/(^\s+|\s+$)/,"").length == 0) continue;
if (first){
f.action += "?" + elms[i].name + "=" + elms[i].value;
first = false;
} else {
f.action += "&" + elms[i].name + "=" + elms[i].value;
}
} else if (/^input$/i.test(elms[i].nodeName)){
switch (elms[i].type.toLowerCase()){
case "checkbox": case "radio":
{
if (!elms[i].checked) continue;
if (first){
f.action += "?" + elms[i].name + "=" + elms[i].value;
first = false;
} else {
f.action += "&" + elms[i].name + "=" + elms[i].value;
}
} break;
case "text":
{
if (elms[i].value.replace(/(^\s+|\s+$)/,"").length == 0) continue;
if (first){
f.action += "?" + elms[i].name + "=" + elms[i].value;
first = false;
} else {
f.action += "&" + elms[i].name + "=" + elms[i].value;
}
} break;
}
}
}
}
</script>
Och på foo.html:
/*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=
=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=
=* Bibliotek för användning av *=*=
=*=*=*=*=* frågesträngar *=*=*=*=*=
=*=*=*=* Skrivet av spango *=*=*=*=
=*=*=* <gustaf-c@dsv.su.se> =*=*=*=
=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=
=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*/
function QueryString(){
this.values = {};
this.queryString = "";
if(arguments.length == 0)
this.queryString = location.search?location.search:"";
else // hade argument
this.queryString = arguments[0];
if(this.queryString.indexOf("?") == 0)
this.queryString = this.queryString.substring(1);
var pairs = this.queryString.split("&");
for(var i in pairs){
pairs[ i] = pairs[ i].split("=");
for(var j in pairs[ i]) // avkoda URL
pairs[ i][j] = unescapePlus(pairs[ i][j]);
var key = pairs[ i][0];
var value = pairs[ i][1];
if(this.values[key]){ // finns redan
if( (typeof this.values[key]) == (typeof []) ){ // fler finns redan
this.values[key] = this.values[key].push(value); // appendera
} /* if array */ else if( (typeof this.values[key]) == (typeof "string")){
this.values[key] = [this.values[key], value]; // skapa ny array
} else this.values[key] = value;
} else { // finns inte
this.values[key] = value;
} // if this.values[key]
} // for pairs
} // function QueryString
function qsGet(key){
var alt ="";
if(arguments.length == 2)
alt = arguments[1];
return this.values[key]? this.values[key] : alt;
}
function qsToString(){
return this.queryString;
}
QueryString.prototype.get = qsGet;
QueryString.prototype.toString = qsToString;
function unescapePlus(str){ // unescape med plustecken
str = globalReplace(str, "+", " ");
return unescape(str);
}
// I Opera 5 funkar inte String.replace av någon konstig
// anledning, så vi får lov att använda en egen funktion.
function globalReplace(str, what, withWhat){
var tmp = "";
while(str.length != 0)
if(str.indexOf(what) == 0){
tmp += withWhat;
str = str.substring(what.length);
} else {
tmp += str.charAt(0);
str = str.substring(1);
}//else
return tmp;
}//globalReplace
/* hämta informationen och lägg den där den skall vara */
<head>
<script type="text/javascript">
var qs = new QueryString();
</script>
</head>
<input name="foo">
<script type="text/javascript">document.forms["namn_på_formulär"].elements["foo"].value = qs.get("namn_i_frågesträngen");</script>
/* alternativt */
<script type="text/javascript">document.write("<input...value='" + qs.get("namn_i_frågesträngen") + "'>");</script>
okej! aaah, nu har jag kommit en bit på väg! :P
men nu har jag upptäckt att jag använder mig av ett script
på en select som gör så att den byter sida beroende på vilket
val man gör i select-listan...
....kan man göra så att allting sparas på sidan innan det finns möjlighet att skifta i selectrutan... eller ska man då linda in det ena formuläret som select-rutan finns på i en iframe?
och når då forumär2 värdena i formulär1 ifall man fixar en sådan iframe runt forumlär2? :P
någon som orkar hjälpa mig? :P