[javascript] hidden/ visible en de "terug" functie

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • livingtale
  • Registratie: September 2002
  • Laatst online: 11-09-2021
Ik heb een script gemaakt dat een offerte produceert wanneer de bezoeker een paar keuzes gemaakt heeft.
Om deze niet te belasten met mogelijkheden waar hij toch niet geïnteresseerd in is, maak ik gebruik van het hidden/visible element.
Werkt uitstekend ... maar
Nu heb ik bij het offerte resultaat ook een terugbutton toegevoegd. Ik wil namelijk het bezoekers gemakkelijk maken meerdere opties uit te proberen - in de geest van: wanneer wordt het nog goedkoper.....
En nu doet zich een vervelende eigenschap voor:
de laatste instelling wordt onthouden, maar zonder het juiste hidden/visible element.
Had je aangeklikt dat je iets wilt, dan is die keuze nog zichtbaar, maar het gevolg is onzichtbaar geworden.
Je moet weer heen en weer gaan om het weer zichtbaar te maken.

Voorbeeld
De keus is geen informatie over files, of wel.
Standaard in het formulier heeft "nee" een check en is er verder niets zichtbaar.
Je vinkt "ja" aan en een keuze menu verschijnt.
Je vraagt de offerte op en gaat terug naar het formulier.
Daar staat de keuze nog steeds op "ja" maar er is geen keuze menu meer zichtbaar.
Die verschijnt pas na eerst "nee" te kiezen, dan weer op "ja".
Ik ben bang dat potentiële klanten dat niet in de gaten hebbben en dus afhaken.

Wie weet een oplossing ..... zonder het hele script te moeten herschrijven

hier een voorbeeld:
http://www.livingtale.nl/offerte2-poker.html

rein van der meij


Acties:
  • 0 Henk 'm!

  • Reptile209
  • Registratie: Juni 2001
  • Laatst online: 17:22

Reptile209

- gers -

Ik denk dat je het hele script moet herschrijven :+ /opendeur
Serieus: je moet de beginpagina bewust maken van het feit dat er al informatie was. Blijkbaar pakt de History-functie dat niet goed op. Je zal dus mogelijk iets van variabelen moeten gaan gebruiken die je meegeeft aan de offerte-pagina en dan weer terug aan het formulier.

Zo scherp als een voetbal!


Acties:
  • 0 Henk 'm!

  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

Een "onload" functie schrijven die alles zichtbaar/onzichtbaar zet adhv de op dat moment ingestelde values?

Acties:
  • 0 Henk 'm!

  • Reptile209
  • Registratie: Juni 2001
  • Laatst online: 17:22

Reptile209

- gers -

Wordt de OnLoad wel getriggerd als je via History op een pagina komt?

Zo scherp als een voetbal!


Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 16:12

crisp

Devver

Pixelated

Reptile209 schreef op zaterdag 14 november 2009 @ 12:50:
Wordt de OnLoad wel getriggerd als je via History op een pagina komt?
ja

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • livingtale
  • Registratie: September 2002
  • Laatst online: 11-09-2021
Bedank voor jullie suggesties.
Ik ben bang dat ik nog wel wat hulp nodig heb, want echt bekend ben ik niet met het onload element, en het meegeven van waarden.

Dit heb ik geprobeerd (zonder dat het werkte).

In de formulier pagina heb ik het volgende opgenomen:
<body onload="terugWaarde()">
In de <head> in javascript:

function terugWaarde() {
var janee
if (janee== "ja"){verschijn(this.form)}
}

waar de variable "janee" aangeeft dat de keuze is dat gegevens zichtbaar worden - in het formulier,
de functie verschijn(this.form) dat het ook daadwerkelijk zichtbaar wordt.

rein van der meij


Acties:
  • 0 Henk 'm!

  • livingtale
  • Registratie: September 2002
  • Laatst online: 11-09-2021
Nog een verbetering (die helaas nook nog niet werkt):
Ik heb in de head van de offerte opgenomen:

if (janee=="ja"){
newContent +='<script language="JavaScript" type="text/javascript">var doorgeven = "ja"</script>'
}

Oftewel: als het aangevinkt is in het formulier dan wordt er een scriptje geschreven in de <head> dat de var doorgeven de waarde "ja" heeft

en vervolgens ipv var janee, var doorgeven:

function terugWaarde() {
var doorgeven
if (doorgeven== "ja"){verschijn(this.form)}
}

rein van der meij


Acties:
  • 0 Henk 'm!

  • livingtale
  • Registratie: September 2002
  • Laatst online: 11-09-2021
Ik heb geprobeerd uit te vinden waarom het niet werkt:

In de eerste plaats heb ik ontdekt dat de variabele in het offerte 'bestand' (var doorgeven) niet in het basisbestand -het formulier- herkend wordt.
Komt dat omdat ik het niet goed aanroep? Als -vergelijkbaar- een variabele uit de moederframe wordt aangeroepen in één van de framebestanden gebruik je "parent." als toevoeging. Is hier een vergelijkbare aanroep?
Of werkt dat überhaupt niet en moet je een boodschap meesturen met de terugbutton (maar dan werkt de terugknop van de browser natuurlijk niet): onclick=" history.go(-1); return false;"

Daarnaast merk dat de aanroep: verschijn(this.form) die wel werkt in het formulier, niet werkt bij de onload opdracht. Is dat omdat de variabele niet aankomt? Het lijkt me eerlijk gezegd onwaarschijnlijk.
De verwerking van het script geeft aan dat het niet herkent wordt.
Bijvoorbeeld:
form.aanvang.style.visibility ="visible";
en
form.weekend[0].style.visibility ="visible";

De melding is bijvoorbeeld: 'aanvang' is leeg og geen object.

Iemand die raad weet?
Alvast bedankt,
Rein

rein van der meij


Acties:
  • 0 Henk 'm!

  • Joolee
  • Registratie: Juni 2005
  • Niet online
Ik zou het persoonlijk oplossen door de wel / niet zichtbaar informatie op te slaan in een cookie welke je uitleest bij laden van de pagina. Zo werkt het ook met de terug knop van de browser.

[ Voor 12% gewijzigd door Joolee op 15-11-2009 15:08 ]


Acties:
  • 0 Henk 'm!

  • Startups
  • Registratie: December 2004
  • Laatst online: 12-09-2022
Quick fix/Dirty hack
  1. Plaats dit stukje na </FORM> in je code.

    code:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    
    <script language="JavaScript" type="text/javascript">
    function checkSelect() {
    if(document.getElementById('selectme').checked == true) {
    alert('Verwijder dit bericht: Geschiedenis herkend!'); Deze regel verwijderen, test.
    verschijn(document.forms[0]);
    } else {
    alert('Verwijder dit bericht: Geen geschiedenis.'); // Deze regel verwijderen, test.
    }
    }
    setTimeout('checkSelect()', 500);
    </script>
  2. Verwijder:
    code:
    1
    
    <INPUT TYPE="radio"onclick="verschijn(this.form)"NAME="janee"value="ja">ja
  3. Voeg in:
    code:
    1
    
    <INPUT id="selectme" TYPE="radio"onclick="verschijn(this.form)"NAME="janee"value="ja">ja
  4. Testen en klaar.
De code werkt, maar daar is alles meegezegd. Test de code eerst goed.

Advies
Als ik jou was zou ik een groot stuk van de code overnieuw doen, want als er bijv. op die zelfde pagina een extra form komt, werkt deze code niet, dus deel bijv. meer id's uit.
Als je puur snel een oplossing wilt kun je deze code dus gebruiken, maar het is beter als je later een andere oplossing gaat zoeken.

[ Voor 44% gewijzigd door Startups op 15-11-2009 15:46 ]


Acties:
  • 0 Henk 'm!

  • tonyisgaaf
  • Registratie: November 2000
  • Niet online
Een veelgebruikte (stateless) oplossing is het gebruiken van de hash van de URL voor het opslaan van de state. Hierbij heb je dus direct toegang tot een state d.m.v. een URL.
Zie ook:

NL Weerradar widget Euro Stocks widget Brandstofprijzen widget voor 's Dashboard


Acties:
  • 0 Henk 'm!

  • Joolee
  • Registratie: Juni 2005
  • Niet online
tonyisgaaf schreef op zondag 15 november 2009 @ 19:34:
[...]

Een veelgebruikte (stateless) oplossing is het gebruiken van de hash van de URL voor het opslaan van de state. Hierbij heb je dus direct toegang tot een state d.m.v. een URL.
Zie ook:
Wat ik me bij deze methode altijd afvraag is hoe je moet omgaan met echte inpage linkjes. Dan zou je alle id's en names moeten gaan prefixen met de naam van de pagina:
/faq.php#item1 wordt dan
/#faq_item1

Acties:
  • 0 Henk 'm!

  • tonyisgaaf
  • Registratie: November 2000
  • Niet online
Joolee schreef op zondag 15 november 2009 @ 19:51:
[...]

Wat ik me bij deze methode altijd afvraag is hoe je moet omgaan met echte inpage linkjes. Dan zou je alle id's en names moeten gaan prefixen met de naam van de pagina:
/faq.php#item1 wordt dan
/#faq_item1
Ik snap je punt niet? Je zegt het één, maar laat het tegenovergestelde zien, want je haalt juist de naam van de pagina weg?

Verder zijn er natuurlijk verschillende strategiën om met behulp van de hash je history in een pagina op te bouwen. Je kunt alle content in de pagina (pre)laden, waarbij je je dus kunt voorstellen dat alle links in de pagina er al als <a href=#anchor"></a> uitzien (en waar je m.b.v. JS er etra gedrag aan attached) of d.m.v. XHR de content laden, waarbij de oorspronkelijke link er als <a href="non-ajax-pagina.html"></a> uitziet, maar waarbij je d.m.v. JS het gedrag volledig override.

Ik lees terug wat ik hierboven het getypet en het ziet er niet echt duidelijk uit... Ik hoop dat het je vraag beantwoordt.

NL Weerradar widget Euro Stocks widget Brandstofprijzen widget voor 's Dashboard

Pagina: 1