[JS] Afvangen variabele uit form

Pagina: 1
Acties:

  • Batje4
  • Registratie: April 2000
  • Laatst online: 26-08 11:07
Eenvoudige vraag volgens mij, maar devguru e.a. hebben mij helaas niet kunnen helpen.

Vraag:
- hoe kan ik in javascript op een target-pagina de waarden afvangen die ik via een form.submit heb doorgegeven?

Het is vast wel mooi weer buiten.


  • Batje4
  • Registratie: April 2000
  • Laatst online: 26-08 11:07
Sorry mod,

mag dit aub naar de buren :o

Het is vast wel mooi weer buiten.


  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Zal je met de onsubmit zaken moeten spelen, of niet?
P&W -> W&G

  • Hangloozz
  • Registratie: Juli 1999
  • Laatst online: 13-07 17:24

Hangloozz

{ @$%&# }

postvar's kun je volgens mij niet afvangen met javascript, getvar's wel door de URL-string te splitten.

www.jurgroessen.nl


  • r0bert
  • Registratie: September 2001
  • Laatst online: 11-08 16:19
Kweet niet, maar als je werkt met frames en je bedoeld met 'target-pagina' een ander frame, dan kun je een javascript functie schrijven en die attachen met het action propperty van het form element.

objFrame.naamVarriabele = objVeld.value;

  • Batje4
  • Registratie: April 2000
  • Laatst online: 26-08 11:07
Het idee dat ik heb is als volgt:
- Ik zit op pagina A. Daar wil ik een drietal variabelen bij een thumbnail plaatsen: Title, Image en Text. Bij het klikken op de thumb moet er een popup komen van een target-html-pagina, bijvoorbeeld doel.html; in doel.html moet dan de vergrote variant van de thumb komen via de variabele Image, met als titel variabele Title en als bijschrift variabele Text.

Het leek mij dat dit het handigste kon door een form te gebruiken. Aangezien een en ander op cd-rom moet (huwelijkscadeau), kan er geen asp op php worden gebruikt. Dus: hoe vang ik nou de waarden uit de submit af?

Hangloozz, kun je iets meer detail geven aub?

Het is vast wel mooi weer buiten.


  • Batje4
  • Registratie: April 2000
  • Laatst online: 26-08 11:07
Aanvullende info:
ik heb nu een js, dat een popup genereert via window.open etcetera. Maar die laat de browser de eerste keer crashen. En soms na een aantal thumbs aangeklikt te hebben (onregelmatig, geen patroon herkenbaar). De popup freezt dan, en loopt vervolgens inclusief de mother vast. Daar hebben al een aantal mensen aan zitten sleutelen, maar het is en mij en hen volkomen onduidelijk waarom een eenvoudige document.write zou kunnen leiden tot een crash. Vandaar deze nieuwe variant: via een submit.

Het is vast wel mooi weer buiten.


Verwijderd

Je kunt dan het beste de variabelen in de URL plaatsen. Daar heb je geen formulier voor nodig. Dus:
HTML:
1
2
3
<a href="doel.html?title=Blues&image=cool.gif&text=plaatje" target="_blank">
    [img]"thumb_cool.gif">
</a[/img]

In doel.html kun je dan d.m.v. de document.location.search-variabele de string met het vraagteken uitlezen. Bijv:
JavaScript:
1
2
3
4
5
6
var sSearch = document.location.search;
var aSearch = sSearch.substr(1).split('&');
for(var i=0; i<aSearch.length; i++) {
    eval('var ' + aSearch[i]);
}
alert(title + ' ' + image + ' ' + text);

  • Hangloozz
  • Registratie: Juli 1999
  • Laatst online: 13-07 17:24

Hangloozz

{ @$%&# }

Batje4 schreef op 26 september 2002 @ 07:33:

Hangloozz, kun je iets meer detail geven aub?
nou, wat Blues als voorbeeld geeft dus :)

www.jurgroessen.nl


  • Batje4
  • Registratie: April 2000
  • Laatst online: 26-08 11:07
Misschien een hele domme opmerking van mij, maar als ik bovenstaand stukje code gebruik, dan geeft de functie eval drie keer undefined. Blijkbaar is het argument binnen eval niet kloppend.
Ik heb de aanroep "var title, image, text" op verschillende plaatsen gezet, maar dat levert ook niets op. Het blijft undefined. Wat gaat daar mis?

Het is vast wel mooi weer buiten.


  • Hangloozz
  • Registratie: Juli 1999
  • Laatst online: 13-07 17:24

Hangloozz

{ @$%&# }

ik zou zeggen: post het hele script eens, want ik kan ff niet voor me halen wat je met 'de aanroep "var title, image, text" ' bedoelt..

www.jurgroessen.nl


  • Batje4
  • Registratie: April 2000
  • Laatst online: 26-08 11:07
Gewoon het benoemen dat er drie variabelen zijn, dus:
code:
1
2
3
4
5
6
7
var title, image, text
var sSearch = document.location.search;
var aSearch = sSearch.substr(1).split('&');
for(var i=0; i<aSearch.length; i++) {
        eval('var ' + aSearch[i]);
    }
alert(title + ' ' + image + ' ' + text);


Omdat ik dacht dat het wellicht te maken had met het niet verklaren van de variabelen. Maar dat was dus niet zo :D

Het is vast wel mooi weer buiten.


Verwijderd

Roep je de pagina wel zo aan?
HTML:
1
2
3
<a href="doel.html?title=Blues&image=cool.gif&text=plaatje" target="_blank">
    [img]"thumb_cool.gif">
</a[/img]

En gooi anders eens wat alertjes tussen de javascript...ik heb het ook zo maar uit m'n mouw geschud ;) Het zou best kunnen dat ik een foutje heb gemaakt... :X

  • Batje4
  • Registratie: April 2000
  • Laatst online: 26-08 11:07
Ik denk dat ik weet wat er mis gaat. Als je de eval in een alert gooit, dan zie je dat er komt: undefined. Maak je van eval een document.write, dan zie je dat er komt te staan: var title=Blues.
En dat moet worden: var title = "Blues".
Dus er moet nog een split plaatsvinden, op "=", en die twee stukken moeten weer achter elkaar gezet worden. Zoiets als: (ik ben geen programmeur van huis uit, dus ik doe het Nijntjeversie)

split op =
eval (split[0] = split[1])

En dat moet nu nog in code :)

[ Voor 0% gewijzigd door Batje4 op 28-09-2002 08:46 . Reden: typo ]

Het is vast wel mooi weer buiten.


  • robjanssen
  • Registratie: September 2001
  • Laatst online: 02-08 16:10

robjanssen

Software Developer

Ik gebruik zoiets voor een kaledar, misschien heb je er iets aan.

Dit is de code in de bron-pagina.
code:
1
<a href="#" onClick="window.dateField = document.SurveyForm.SurveyFromDate;window.dateField2 = document.SurveyForm.SurveyFromDateDisplay;calendar = window.open('calendar.asp','cal','WIDTH=200,HEIGHT=210,LEFT=660,TOP=300')">


En dit is de code om in de doel-pagina de variabelen weer op te roepen.
code:
1
2
this.dateField   = opener.dateField;
this.dateField2  = opener.dateField2;

  • Batje4
  • Registratie: April 2000
  • Laatst online: 26-08 11:07
Het heeft even geduurd, maar ik vond het belangrijk om toch even mijn uiteindelijke oplossing te presenteren, en natuurlijk iedereen te danken die heeft geholpen (forum, icq en mail) _/-\o_

Mijn oplossing werkt voor IE4.0 en hoger, N4.7x en hoger en Opera 4.0 en hoger.
Allereerst gebruik ik een javascript functie, die ik in een tabel een href laat vormen. De href ziet er als volgt uit:
code:
1
2
3
4
5
6
7
function BuildHref(title, image, text) {
var pas1 = '<a href="#" onclick="'
var pas2 = "window.open('doel.html?title=" + title + "&image=" + image + "&text=" + text + "','cal','WIDTH=450, HEIGHT=450, scrollbars=yes')"
var pas3 = '">'
var pas4 = '[img]"/Path_to_images/'[/img]</a>'
document.write(pas1 + pas2 + pas3 + pas4);
}


Zoals je ziet roep ik via de href in een popup een standaard html-bestand aan: doel.html. In dat bestand staat o.a. het volgende:

code:
1
2
3
4
5
6
7
8
9
10
<script language="JavaScript" type="text/javascript">
var tmp=this.location.href;
tmp=tmp.substr(tmp.indexOf("?")+1,tmp.length);
var args=new Array();
for(var i=0;i<tmp.split("&").length;i++){
    args[tmp.split("&")[i].split("=")[0]]=unescape(tmp.split("&")[i].split("=")[1]);
}
document.write("<title>" + args['title'] + "</title>");
document.focus();
</script>


Dit stukje code stelt mij dus in staat om de verschillende variabelen te scheiden (uit de array), en op elk gewenste plek (in dit geval: als titel) aan te roepen.

Enig nadeel dat ik heb kunnen ontdekken, is dat je in je html op verschillende plekken de gehele code moet herhalen voor de verschillende variabelen. Het is dus niet zo handig wanneer je veel variabelen wilt gebruiken, maar voor in mijn site werkt dit prima.

En ik ben hier blij mee :+

Het is vast wel mooi weer buiten.

Pagina: 1