javascript form validator

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Gerard Nijboer

Gerard Nijboer

18/05/2009 21:46:00
Quote Anchor link
Hey,

ik probeer mijn formulier via javascript te valideren voordat het wordt gesubmit, maar ik kan nu wel checken of vereiste velden leeg zijn, maar niet of een ander veld een bepaalde waarde heeft meegekregen.
kan dat kloppen?

code:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<form method="post" name="newticket" onsubmit="return ValidateForm(this)">
        <tr><th colspan="99">Bezorgwijze</th></tr>
        <tr><td><? tooltip("Bezorgwijze","bezorgwijze");?></td><td><label><input class="nothing" checked="checked" type="radio" name="nos_bezorg" value="afhalen" /><? tooltip("Afhalen","afhalen");?></label><br /><label><input class="nothing" type="radio" name="nos_bezorg" value="opsturen" /><? tooltip("Opsturen","opsturen");?></label></td></tr>
</form>


Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
function ValidateForm(frm) {
    switch(frm.name){
        case "newticket":
            if (frm.nos_naam.value=="" || frm.nos_telefoon=="" || frm.nos_email=="") {
                alert("U heeft niet alle verplichte velden ingevuld.\nZonder deze verplichte velden kan het formulier niet verzonden worden.");
                return false;
            }
            if (frm.nos_bezorg.value=="opsturen") {
            alert("Opsturen");
            return false;
            }
            break;
    }

    }


ik hoop dat het duidelijk is zo, ik heb even een paar stukjes code geknipt.
kortom: als het formulier "newticket" heet en de bezorgwijze opsturen is, moet er een alert komen.
suggesties?
 
PHP hulp

PHP hulp

25/04/2024 21:31:09
 
GaMer B

GaMer B

18/05/2009 22:00:00
Quote Anchor link
Probeer LiveValidation eens.
 
Gerard Nijboer

Gerard Nijboer

18/05/2009 22:03:00
Quote Anchor link
denk dat ik liever de code zelf blijf schrijven omdat ik een iets gecompliceerdere constructie ga maken dan dat hierboven staat.
Het is namelijk zo, adres is geen verplicht veld, maar wel as je voor opsturen kiest.
Iemand anders enig idee voor de IF statement voor:
IF bezorg=="opsturen" AND adres="" OR plaats==""

ik ben namelijk niet zo ervaren met javascript
 
Gerard Nijboer

Gerard Nijboer

18/05/2009 22:12:00
Quote Anchor link
just a thought, kan het er mee te maken hebben dat het een radio button field is? hoe ga ik daar mee om?

Gelieve Niet Bumpen::
Twee of meer keer achter elkaar in een topic posten heet bumpen. Bumpen is pas na 24 uur toegestaan en kan een reden zijn voor de admins en moderators om een topic te sluiten. Gebruik indien nodig de Afbeelding knop om je tekst aan te passen.

SanThe.
Gewijzigd op 01/01/1970 01:00:00 door Gerard Nijboer
 
Niek Weevers

Niek Weevers

18/05/2009 22:30:00
Quote Anchor link
Ik heb er eerlijk gezegd niet goed naar gekeken. Maar wel even een advies. Gebruik jQuery (of MooTools).
Het scripten wordt daardoor een stuk makkelijker en kortere code. Er zijn zeer veel voorbeelden en plugins te vinden voor deze libraries.
Bijv deze: http://malsup.com/jquery/form/
 
Gerard Nijboer

Gerard Nijboer

18/05/2009 22:34:00
Quote Anchor link
ik ben dr nu achter dat het achterhalen van radio values nogal lastig gaat.

heb nu de volgende constructie:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<form method="post" name="newticket" onsubmit="return get_radio_value(); return ValidateForm(this)">


Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
function ValidateForm(frm) {
    switch(frm.name){
        case "newticket":
            if (frm.nos_naam.value=="" || frm.nos_telefoon=="" || frm.nos_email=="") {
                alert("U heeft niet alle verplichte velden ingevuld.\nZonder deze verplichte velden kan het formulier niet verzonden worden.");
                return false;
            }
            else if (rad_val=="opsturen") {
                alert("Opsturen");
                return false;
            }
            break;
    }
    }


Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
function get_radio_value()
{
for (var i=0; i < document.newticket.nos_bezorg.length; i++)
   {
   if (document.newticket.nos_bezorg[i].checked)
      {
      var rad_val = document.newticket.nos_bezorg[i].value;
      }
   }
}


maar ook dit blijkt niet te werken, ik zie door de bomen het bos niet meer! suggesties?

ook jquery had ik al gevonden, maar dat is niet waar ik naar op zoek ben. ik heb het liefst gewoon zelf geschreven code zodat ik er ook nog wat van leer, aangezien mijn ervaring met JS niet zo groot is.
Gewijzigd op 01/01/1970 01:00:00 door Gerard Nijboer
 

18/05/2009 22:35:00
Quote Anchor link
Niek schreef op 18.05.2009 22:30:
Ik heb er eerlijk gezegd niet goed naar gekeken. Maar wel even een advies. Gebruik jQuery

Inderdaad, zeker omdat je nu document.form.input1 (weetikveel, zeg maar wat, maar wel iets in die trant) doet, dat is slecht, dat moet je niet doen. Je moet bijvoorbeeld gebruik maken van document.getElementById ( https://developer.mozilla.org/En/Document.getElementById )
 
Gerard Nijboer

Gerard Nijboer

18/05/2009 22:40:00
Quote Anchor link
Mag ik vragen waarom dat slecht is, en waarom ElementId voorkeur heeft?
Waar ik op dit moment nogal mee zit is de waarde van de geselecteerde radio button, die moet ik testen. Is daar niet iets simpels op te verzinnen?

Ik kom er ook net achter dat mijn 2e validatie niet meer werkt:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<form method="post" name="newticket" onsubmit="get_radio_value(); return ValidateForm(this)">


Mag dat niet zo?

===OPGELOST===

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<form method="post" name="newticket" onsubmit="return ValidateForm(this)">

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
function ValidateForm(frm) {
for (var i=0; i < document.newticket.nos_bezorg.length; i++)
   {
   if (document.newticket.nos_bezorg[i].checked)
      {
      var rad_val = document.newticket.nos_bezorg[i].value;
      }
   }


    switch(frm.name){
        case "newticket":
            if (frm.nos_naam.value=="" || frm.nos_telefoon=="" || frm.nos_email=="") {
                alert("U heeft niet alle verplichte velden ingevuld.\nZonder deze verplichte velden kan het formulier niet verzonden worden.");
                return false;
            }
            else if (rad_val=="opsturen") {
                alert("Opsturen");
                return false;
            }
            break;
    }
    }
Gewijzigd op 01/01/1970 01:00:00 door Gerard Nijboer
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.