login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Submit na onClick() (Opgelost)

Offline Abbas - 15/09/2008 23:18 (laatste wijziging 15/09/2008 23:18)
Avatar van AbbasGouden medaille

Crew .NET
Is het mogelijk dat bij het klikken van een submitknop in een formulier eerst een stuk JavaScript code uitgevoerd wordt en dat afhankelijk van de return van de JavaScript code al dan niet de PHP verder wordt uitgevoerd? Zo ja, hoe doe je dat dan? Zo nee, kan je dit op een of manier toch doen (omzeiling ofzo)?

Alvast bedankt!

11 antwoorden

Gesponsorde links
Offline vinTage - 15/09/2008 23:22
Avatar van vinTage Nieuw lid onclick (<= xhtml valid ) = blaat();

  1. function blaat()
  2. {
  3. if (goed)
  4. {
  5. return true;
  6. }
  7. else
  8. {
  9. return false;
  10. }
  11. }

Offline Abbas - 15/09/2008 23:23
Avatar van Abbas Gouden medaille

Crew .NET
En als die false teruggestuurd wordt, zal de PHP niet uitgevoerd worden?
Offline Stijn - 15/09/2008 23:24
Avatar van Stijn PHP expert Er bestaat zoiets als een submit event (onsubmit). Je kan daarin code gaan uitvoeren. Indien je wilt dat het formulier niet verstuurd wordt moet je return false; teruggeven.

  1. function controle()
  2. {
  3.  
  4. if( ! .... ) {
  5. return false;
  6. }
  7.  
  8. }


  1. <form onsubmit="controle();" ....
Offline Abbas - 15/09/2008 23:25
Avatar van Abbas Gouden medaille

Crew .NET
Ok, hier kan ik wel wat mee denk ik.. Merci!
Offline robmoorman - 15/09/2008 23:38
Avatar van robmoorman PHP interesse eventueel onsubmit="return control();"
Offline Stijn - 15/09/2008 23:53
Avatar van Stijn PHP expert @g0dlike: er staat al een return bij de functie.
Offline Abbas - 16/09/2008 00:06 (laatste wijziging 16/09/2008 00:07)
Avatar van Abbas Gouden medaille

Crew .NET
Hm, blijkbaar werkt dit niet echt want dit heb ik als code en toch wordt de PHP altijd uitgevoerd:

JavaScript:
  1. function validate()
  2. {
  3. var mail = document.getElementById("emailInput").value;
  4. var bevMail = document.getElementById("bevMailInput").value;
  5.  
  6. if(mail == "" || bevMail == "")
  7. return false;
  8. else
  9. return true;
  10. }


Formulier:
  1. <form name="changeMail" method="post" action="" onSubmit="javascript:validate()">
  2. <input type="text" name="emailInput" id="emailInput" style="width:200px;" />
  3. <br />
  4. <input type="text" name="bevMailInput" id="bevMailInput" style="width:200px;" />
  5. <br />
  6. <input type="submit" name="submitMail" value="Wijzig" />
  7. </form>

Als ik nu bijvoorbeeld een alert("Fout!"); zet waar "return false" staat, dan wordt die weergegeven maar nog steeds dan wordt de PHP uitgevoerd... 
Offline BramBo - 16/09/2008 00:37
Avatar van BramBo JS gevorderde in de onSubmit:

"javascript: return validate();"
Offline Abbas - 16/09/2008 00:38 (laatste wijziging 16/09/2008 00:46)
Avatar van Abbas Gouden medaille

Crew .NET
Maar in de JavaScript code staat al een return, is dat dan niet een beetje dubbelzinnig/nutteloos?

Edit:
Blijkbaar niet, het werkt.. Bedankt!

Edit2:
Klein probleempje nog. Ik wil in een div een foutmelding geven als er false wordt teruggestuurd, maar dit wil niet werken:
  1. if(mail == "" || bevMail == "")
  2. {
  3. var divValue = document.getElementById("errorDiv");
  4. divValue.innerText = "Foutmelding";
  5. return false;
  6. }


Indien nuttig, de div:
  1. <div id="errorDiv"></div>

Alvast bedankt (nogmaals)
Offline BramBo - 16/09/2008 00:58 (laatste wijziging 16/09/2008 00:59)
Avatar van BramBo JS gevorderde ik wed dat je test in Firefox 

Dit is de enige browser(zover ik weet) die innerText niet ondersteunt het was orgineel een IE-property. Natuurlijk heeft FF een tegenhanger om het gemakkelijk te maken.
Je kan of innerHTML gebruiken, maar als je alleen text wilt tonen is dit inderdaad niet nodig. Gebruik:

  1. // brr..
  2. if (divValue.innerText) divValue.innerText = "Foutmelding";
  3. else divValue.textContent = "Foutmelding";
Offline Abbas - 16/09/2008 02:05 (laatste wijziging 16/09/2008 02:31)
Avatar van Abbas Gouden medaille

Crew .NET
Natuurlijk test ik in FF! Er mag ook HTML bij dus ik zal die innerHtml wel gebruiken dan en als dat toch niet zou werken is er die textContent nog, merci.. 

Edit:
Ok, nu werkt alles! 
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.194s