[JavaScript?] Form submitten via javascript werkt 'half'

Pagina: 1
Acties:

  • Rashann
  • Registratie: Maart 2000
  • Laatst online: 01-01 22:01

Rashann

Zoek de hond...

Topicstarter
Hoi,

Ik heb een nogal vreemd probleem, namelijk het volgende:

Ik heb een formulier in een pagina waarmee mensen een bepaald artikel in een winkelwagentje kunnen plaatsen. Echter, voordat ik dit doe wil ik dat er via javascript een check gedaan wordt of het aantal niet te groot is (dit is per artikel anders).

De pagina bevat een standaard linkje waarin een onClick="checkAantal()" zit:
code:
1
2
3
<form name="frm" action="page.php" method="get">
<a href="javascript:;" onClick="checkAantal();"><img src="images/knop-bestellen.jpg" alt="Bestellen" name="Bestellen" width="94" height="19" border="0"></a>
</form>


Die functie ziet er zo uit:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
function checkAantal() {
  if(document.frm.aantal.value!='' && parseInt(document.frm.aantal.value)>0) {
    if(parseInt(document.frm.aantal.value) <= parseInt(document.frm.max_aantal.value)) {
      document.frm.submit();
      //Alert geven met het max aantal, dit betekend dat het script hier komt...
      //alert(parseInt(document.frm.max_aantal.value));
    } else {
      //Divje weergeven als het aantal te groot is
      document.getElementById('teweinig').style.display = '';
    }
  } else {
    //Bij een leeg veld waarschuwing geven
    alert('U dient een aantal in te geven');
  } 
}

Het vreemde is nu, als ik in Internet Explorer op het linkje klik, zie ik niets veranderen! De pagina blijft op het productoverzicht staan. Echter, in de database waar de orders worden bijgehouden, word het ingegeven aantal wel bijgewerkt :?

In andere browser (Firefox/Opera) kom ik na het klikken van de link wel gewoon in m'n winkelwagentje terecht....

Kan iemand me een reden geven waarom het in IE niet werkt? Ik wordt echt gek hier...

[Edit] Oh ja, als ik gewoon een input type="submit" erin gooi, kom ik in IE wel op m'n winkelmandje uit.

[ Voor 3% gewijzigd door Rashann op 27-09-2006 15:35 ]

If nothing is written below, I was the last to reply...


  • Cartman!
  • Registratie: April 2000
  • Niet online
code:
1
href="javascript:;"


Dat is in ieder geval fout.
Verder mis ik de form elementen (het input veld?) in je code. Kom je sowieso al in je functie?

edit:
Je zou ook gewoon een image kunnen gebruiken en daar de onclick aan hangen, met css een andere cursor er aan geven...

[ Voor 28% gewijzigd door Cartman! op 27-09-2006 15:54 ]


  • OkkE
  • Registratie: Oktober 2000
  • Laatst online: 10-11-2025

OkkE

CSS influencer :+

Wat voor meldingen en/of errors geeft de JavaScript Console van Firefox? Over het algemeen staan hier wel nuttige berichten in. :)

Een beetje offtopic:

Verder is het netter om de link voor het toevoegen van een artikel of via een <input> of <button> te doen. Of, als je het via een link wilt doen, om 't dan zo te maken dat het ook zonder javascript werkt. Tenzij je er natuurlijk bewust voor kiest dat mensen zonder javascript geen gebruik kunnen maken van de shop.

“The best way to get the right answer on the Internet is not to ask a question, it's to post the wrong answer.”
QA Engineer walks into a bar. Orders a beer. Orders 0 beers. Orders 999999999 beers. Orders a lizard. Orders -1 beers.


  • Cartman!
  • Registratie: April 2000
  • Niet online
Uit het voorbeeld kan ik ook niet opmaken of de button zit in je gewone form of dat je hem loshaalt. Als je hem loshaalt is javascript de enige manier. Mocht je button gewoon onder je inputs komen te staan dan ben ik het helemaal met OkkE eens dat je een input moet gebruiken :

code:
1
<input type="image" name="submit" src="verstuur.gif">

  • momania
  • Registratie: Mei 2000
  • Laatst online: 13-02 17:08

momania

iPhone 30! Bam!

gebruik gewoon een normale input submit idd :)

en om controles uit te voeren kan je beter de onsubmit gebruiken van je form
HTML:
1
<form name="frm" action="page.php" method="get" onsubmit="return checkBla()">


JavaScript:
1
2
3
4
5
6
7
function checkBla() {
  // als check goed:
  return true;

  // als check fout:
  return false;
}

:Y)

Neem je whisky mee, is het te weinig... *zucht*


  • reddevil
  • Registratie: Februari 2001
  • Laatst online: 06-10-2025
volledige source zou hier ook wel handig zijn (of online voorbeeld ergens)

  • OkkE
  • Registratie: Oktober 2000
  • Laatst online: 10-11-2025

OkkE

CSS influencer :+

momania schreef op woensdag 27 september 2006 @ 18:03:
gebruik gewoon een normale input submit idd :)

en om controles uit te voeren kan je beter de onsubmit gebruiken van je form
HTML:
1
<form name="frm" action="page.php" method="get" onsubmit="return checkBla()">
Opzich ben ik het met je eens, dat je de meeste checks bij een onsubmit(); wil doen. In dit geval echter, zou ik er ook voor kiezen om het al bij een onclick(); te doen. Het gaat om het toevoegen van producten (wat onclick() gebeurd), en checken of daar het juiste aantal van besteld wordt. Dat vind ik als developer logischer bij onclick() en als gebruiker lijkt 't me fijner om 't al direct bij onclick() te merken, als ik een ongeldig aantal wil bestellen.

“The best way to get the right answer on the Internet is not to ask a question, it's to post the wrong answer.”
QA Engineer walks into a bar. Orders a beer. Orders 0 beers. Orders 999999999 beers. Orders a lizard. Orders -1 beers.


  • crisp
  • Registratie: Februari 2000
  • Laatst online: 10:11

crisp

Devver

Pixelated

Eensch met momania. Daarnaast is het misbruik van anchors voor het uitvoeren van script gewoon not done (tenzij je de href gebruikt voor een non-JS alternatief), en als je ergens het javascript: pseudo-protocol denkt nodig te hebben dan zit je fout ;)

IE wil overigens nog wel eens rare dingen doen als een onclick van een anchor niet gecancelled wordt (return false) en de href vervolgens (dus) uitgevoerd wordt. De javascript helemaal in de href opnemen heeft ook tot gevolg dat bijvoorbeeld animated gifs stoppen met afspelen e.d.

In dit geval, als je al een onclick wilt gebruiken, zet die dan gewoon op de <img>.

[ Voor 10% gewijzigd door crisp op 28-09-2006 10:05 ]

Intentionally left blank

Pagina: 1