[JS] Checkform werkt niet?

Pagina: 1
Acties:
  • 233 views sinds 30-01-2008
  • Reageer

  • Flappie
  • Registratie: Februari 2001
  • Laatst online: 14:35
Hallo :)

Ik heb een probleempie. Ik heb een website en gebruik een javascript om de invoer van een forumlier te controleren. Gewoon zo'n standaard scriptje van internet :)

Ik gebruik deze in een website met PHP. De pagina met het formulier en het javascript worden ge-include (beetje rare zin :?)

Probleem:
Als ik de pagina gewoon open werkt het script wel. Zie hier:
http://www.maartenbrand.nl/contact.php

Word deze pagina aangeroepen vanaf de index met een include functie, dan werkt hij niet meer :? Zie hier:
http://www.maartenbrand.nl/index.php?data=contact

Ik zal er wel overheen kijken ofzo, maar ik heb geen id wat ik verkeerd doe. Jullie zijn mijn laatste hoop! :)

Script:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<script language="JavaScript">
function checkform()
{
    if (contact.naam.value == "")
    {
        alert("Error: Je hebt geen naam ingevuld! Druk op 'Enter' en vul je naam in!");
        contact.naam.focus();
        return false;
    }
    else if (contact.email.value =="")
    {
        alert("Error: Je hebt geen e-mail adres ingevuld ingevuld! Druk op 'Enter' en vul je naam in!");
            contact.email.focus();
            return false;
    }
    else if (contact.vraag.value =="")
    {
        alert("Error: Je hebt geen opmerking, vraag of probleem ingevuld! Druk op 'Enter' en vul je opmerking, vraag of probleem in!");
            contact.vraag.focus();
            return false;
    }

    return true;
}
</script>



Formulier:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<form name="contact" method=post onSubmit="return checkform()" action="index.php?data=contact-verwerk">
                  <table>
                  <tr>
                              <th width="200"  class="top" scope="col">Contact</th>
                              <th width="350" class="top"></th>
                  </tr>
                  <tr>
                              <th width="200" scope="row">Naam:</th>
                              <td width="350"><input type="text" name="naam" size="25"></td>
                  </tr>
                  <tr>
                              <th width="200" scope="row">E-mail:</th>
                              <td width="350"><input type="text" name="email" size="25"></td>
                  </tr>
                   <tr>
                              <th width="200" scope="row">Vraag/probleem/opmerking:</th>
                              <td width="350"><textarea rows="10" name="vraag" cols="40"></textarea></td>
                  </tr>
                  <tr>
                              <th width="200" scope="row"></th>
                              <td width="350"><input type="submit" value="Versturen"></td>
                  </tr>
                  </table>
                  </form>


Thx :)

[ Voor 57% gewijzigd door Flappie op 18-01-2007 16:50 ]


  • HyperioN
  • Registratie: April 2003
  • Laatst online: 31-10 21:55
Je moet natuurlijk wel even wat (relevante) code posten; hier kunnen we natuurlijk weinig tot niks mee.

  • TeeDee
  • Registratie: Februari 2001
  • Laatst online: 14:04

TeeDee

CQB 241

Hernoem de name van je form eens naar bijvoorbeeld "contact_form" oid dergelijks?

Heart..pumps blood.Has nothing to do with emotion! Bored


  • Flappie
  • Registratie: Februari 2001
  • Laatst online: 14:35
TeeDee schreef op donderdag 18 januari 2007 @ 16:54:
Hernoem de name van je form eens naar bijvoorbeeld "contact_form" oid dergelijks?
Lijkt me dat dat nooit kan werken want:

if (contact.naam.value == "")

contact = formuliernaam
naam= veldnaam

  • TeeDee
  • Registratie: Februari 2001
  • Laatst online: 14:04

TeeDee

CQB 241

Misschien dat contact overeen komt met de URL parameter "data=contact" :? en daarom JS een beetje in de war is :?

Ten tweede kan je dan net zo goed document.getElementById('naam') gebruiken.

[ Voor 11% gewijzigd door TeeDee op 18-01-2007 17:01 ]

Heart..pumps blood.Has nothing to do with emotion! Bored


  • HyperioN
  • Registratie: April 2003
  • Laatst online: 31-10 21:55
TeeDee schreef op donderdag 18 januari 2007 @ 16:59:
Misschien dat contact overeen komt met de URL parameter "data=contact" :? en daarom JS een beetje in de war is?
Nee dat is onzin..
Ten tweede kan je dan net zo goed document.getElementById('naam') gebruiken.
Daar heb je wél gelijk in :)


@TS: ik denk dat er een en ander misloopt doordat je zowel JS als PHP gebruikt. Je submit nu naar PHP waardoor je de JS-check als het ware overslaat.. Dus waarom zet je die checks niet in PHP? Of je moet eerst de JS-checks uitvoeren alvorens te submitten naar php.

[ Voor 6% gewijzigd door HyperioN op 18-01-2007 17:01 ]


  • TeeDee
  • Registratie: Februari 2001
  • Laatst online: 14:04

TeeDee

CQB 241

Hmm, volgens mij zie ik in het form gedeelte van de contact.php EN het index.php?data=contact gedeelte geen verschil in de action.

Ik weet niet wat je veranderd hebt, maar de contact.php checked nu ook helemaal niks meer.

Voor de volledigheid zou je contact.naam.focus(); nog even kunnen wijzigen in contact-form.naam.focus();
JavaScript:
1
2
3
4
5
6
    if (contact-form.naam.value == "")
    {
        alert("Error: Je hebt geen naam ingevuld! Druk op 'Enter' en vul je naam in!");
        contact.naam.focus();
        return false;
    }

[ Voor 60% gewijzigd door TeeDee op 18-01-2007 17:08 ]

Heart..pumps blood.Has nothing to do with emotion! Bored


  • Flappie
  • Registratie: Februari 2001
  • Laatst online: 14:35
HyperioN. schreef op donderdag 18 januari 2007 @ 17:01:
[...]
Nee dat is onzin..

[...]
Daar heb je wél gelijk in :)


@TS: ik denk dat er een en ander misloopt doordat je zowel JS als PHP gebruikt. Je submit nu naar PHP waardoor je de JS-check als het ware overslaat.. Dus waarom zet je die checks niet in PHP? Of je moet eerst de JS-checks uitvoeren alvorens te submitten naar php.
Ik heb het formulier een andere naam gegeven. Dat helpt inderdaad niet!

Ik wil graag de inhoud checken voor de echte submit. Dat gebeurt met deze code:
onSubmit="return checkform()"

btw, ik gebruik het zelfde scrpt voor het gastenboek en daar werkt ie dus ook niet :(

[ Voor 6% gewijzigd door Flappie op 18-01-2007 17:07 ]


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 20-11 11:59

NMe

Quia Ego Sic Dico.

@TS: probeer je pagina eerst eens te valideren. Misschien lost het je probleem niet op, maar je kan er in elk geval een mogelijke oorzaak mee uitsluiten. :)
TeeDee schreef op donderdag 18 januari 2007 @ 17:04:
Voor de volledigheid zou je contact.naam.focus(); nog even kunnen wijzigen in contact-form.naam.focus();
Ah, je wou er een rekensommetje van maken? De "-" is nog steeds een operator, ook in JS. ;)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • TeeDee
  • Registratie: Februari 2001
  • Laatst online: 14:04

TeeDee

CQB 241

-NMe- schreef op donderdag 18 januari 2007 @ 17:19:
Ah, je wou er een rekensommetje van maken? De "-" is nog steeds een operator, ook in JS. ;)
contact_form dan. ;) Naam is inmiddels al gewijzigd als ik het zo zie.

Heart..pumps blood.Has nothing to do with emotion! Bored


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

crisp

Devver

Pixelated

Hou toch eens op met die domme dot-notatie en ervan uitgaan dat elementen met een name en/of id automagisch in de global namespace staan. Voor dit soort dingen kan je gewoon een handle naar je formulier als argument meegeven aan je functie:
HTML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<script type="text/javascript">

function checkForm(form)
{
  if (form.elements['foo'].value == '')
  {
    alert('fout!');
    return false;
  }

  return true;
}

</script>
<form action="#" onsubmit="return checkForm(this)">
  <input type="text" name="foo">
</form>

Intentionally left blank


  • TeeDee
  • Registratie: Februari 2001
  • Laatst online: 14:04

TeeDee

CQB 241

Hoe bedoel je? Dot notatie?
André schreef op donderdag 18 januari 2007 @ 18:57:
crisp bedoeld: document.formuliernaam.veldnaam.value, met deze notatie ga je er van uit dat formuliernaam in de global namespace staat, en dat is niet zo. Wel is het zo dat een aantal browsers deze notatie herkennen en hem redelijk kunnen interpreteren. Maar wil je het goed doen gebruik je de forms en elements collectie :)
Duidelijk. Thanks ;)

[ Voor 89% gewijzigd door TeeDee op 18-01-2007 20:16 ]

Heart..pumps blood.Has nothing to do with emotion! Bored


  • André
  • Registratie: Maart 2002
  • Laatst online: 14:48

André

Analytics dude

crisp bedoeld: document.formuliernaam.veldnaam.value, met deze notatie ga je er van uit dat formuliernaam in de global namespace staat, en dat is niet zo. Wel is het zo dat een aantal browsers deze notatie herkennen en hem redelijk kunnen interpreteren. Maar wil je het goed doen gebruik je de forms en elements collectie :)
Pagina: 1