Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Javascript tarkastaa tiedot - ongelma

Sivun loppuun

mizzou [08.11.2006 07:07:10]

#

Teen php:lla vieraskirjaa netti sivuilleni ja tarkoituksena on etta kun "laheta"-nappia painetaan niin javascriptilla tehty koodin patka tarkastaa mm. etta nimi kentassa on tavaraa jne.

Ongelma on se etta en saa javascriptia tarkastamaan kun painan laheta-nappia. Tiedot nimi- ja viesti-kentassa kylla menee tietokantaan mutta scripti ei sita tarkasta eli jotenkin se ei javascriptia loyda.

Luulen tietavani missa kohtaa se ongelma on eli seuraava koodi on html sivulla jossa lomake sijaitsee.

function checkForm()
{
   // muuttujat (nimi, email, viesti)
   var gname, gemail, gmessage;

   with(document.window.form) //TAMA RIVI TOD.NAK ON VAARIN

.... tasta eteen pain on javascriptin tarkastus koodia...

Sitten kun toi js loppuu niin alkaa lomake ja tassa on ekat kaksi rivia ja lahetys-napin rivi:

<body>
<form action="form.php" name="form" method="post">
...
<input type="submit" name="submit" id="submit" value="Submit" onClick="return checkForm();">

Elikka tuon checkForm() kohdan pitaisi laittaa meneilla oleva prosessi sinne sivun alkuun jossa on "function checkForm()". Nyt koodini jotenkin vain skippaa taman. Jos joku nakee heti virheen tai haluaa enemman koodia nakyviin niin mina kylla laitan. Kiitokset taas jo etukateen.

-Matti

Niko [08.11.2006 07:38:00]

#

<form ... onsubmit="return checkForm();">

Ja muista ettei kaikilla ole javascriptiä :>

mizzou [08.11.2006 07:55:23]

#

Kiitoksia nopeasta vastauksesta mutta kylla se vielakin syottaa tiedot suoraan tietokantaan ilman etta ilmoittaisi tyhjasta nimi-kentasta.

Kannattaisiko minun harkita jotain muuta vaihtoehtoa.. pelkkaa php pohjaista ratkaisua vai?

El-Ejecutor [08.11.2006 08:46:24]

#

Pitäisin PHP-ratkaisua parempana jo ihan pelkästään senkin puolesta että se pelittää varmasti kaikilla.

kayttaja-2791 [08.11.2006 08:54:52]

#

lainaus:

Kannattaisiko minun harkita jotain muuta vaihtoehtoa.. pelkkaa php pohjaista ratkaisua vai?

JS + PHP on minusta huomattavasti käytettävyydeltään parempi ratkaisu, jos saat toimimaan. Paha sanoa missä ongelma on, kun koko koodi ei ole näkyvissä.

siirappi [08.11.2006 10:14:38]

#

checkForm-funktion tulee palauttaa false, jos kaikkia tietoja ei ole täytetty.

https://www.ohjelmointiputka.net/keskustelu/13561-formin-tarkastus-javascriptillä-jos-ok-niin-php

mizzou [08.11.2006 15:33:16]

#

Tassa on lomakkeen koodi. Alussa on js ja sitten tulee itse lomake. Kuten tuosta nakyy niin erillinen FORM.PHP tiedosto sitten syottaa tiedot kantaan mutta ennen sita pitaisi tarkastuksen tapahtua joten en laittanut FORM.PHP:n koodia nakyville. Jos se onkin oleellista niin sitten tietysti laitan.

<html>
<head>
<title>Guestbook form</title>

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

<script language="JavaScript">
/*
    This function is called when
    the 'Submit' button is pressed
    Output : true if all input are correct, false otherwise
*/

function checkForm()
{
   // the variables below are assigned to each
   // form input
   var gname, gemail, gmessage;

   //tasta rivista en ole varma etta onko se oikein!!!
   with(window.document.form)
   {
      gname    = name;
      gemail   = email;
      gmessage = comment;
   }

   // if name is empty alert the visitor
   if(trim(gname.value) == '')
   {
      alert('Please enter your name');
      gname.focus();
      return false;
   }
   // alert the visitor if email is empty or
   // if the format is not correct
   else if(trim(gemail.value) != '' && !isEmail(trim(gemail.value)))
   {
      alert('Please enter a valid email address or leave it blank');
      gemail.focus();
      return false;
   }
   // alert the visitor if message is empty
   else if(trim(gmessage.value) == '')
   {
      alert('Please enter your message');
      gmessage.focus();
      return false;
   }
   else
   {
      // when all input are correct
      // return true so the form will submit
      return true;
   }
}
/*
Strip whitespace from the beginning and end of a string
*/
function trim(str)
{
   return str.replace(/^\s+|\s+$/g,'');
}

/*
   Check if a string is in valid email format.
*/
function isEmail(str)
{
var regex = /^[-_.a-z))$/i; // TASSA ON OIKEESTI TOLKUTON MAARA TEKSTIA-->
return regex.test(str);
}
</script>

<!--Lomake lahtee tasta-->
</head>
<body>
<form action="form.php" name="form" method="post">
<table><tr>
<td>Name: </td>
<td><input type="text" name="name" id="name" size="15" maxlength="30"></td>
</tr><tr>
<td>Email: </td>
<td><input type="text" name="email" id="email" size="15" maxlength="80"></td>
</tr><tr>
<td>Comments: </td>
<td><textarea name="comment" cols="15" rows="4" id="comment"></textarea></td>
</tr><tr> <!--LAHETYS NAPPI JOKA EI TALLA HETKELLA JOSTAIN SYYSTA MENE checkForm() KOHTAAN???-->
<td colspan="2" align="center"><input type="submit" name="submit" id="submit" value="Submit" onClick="return checkForm();">
<input type="reset" name="reset" value="Reset"></td>
</tr></table>
</form>
</body>
</html>

JS ei ole minun koodiani koska minulla ei sen kasittelyyn ole tieto-taitoa.

-Matti

mizzou [09.11.2006 05:03:01]

#

Taidan kuopata taman javascriptin kayton koska ei se lahde millaan toimimaan. Joten olisiko vinkkeja miten php voisi tarkastaa etta nimi- ja viesti-kentassa on tavaraa (ja jos on mahdollista tarkastaa maili osoite myos niin mista loytyisi siita tietoa).

Ja sitten yksi kysymys lisaa, talla hetkella kaikki vastaukset vieraskirjassa joissa ei ole valeja jatkuvat yhdella rivilla niin pitkalle kuin sanassa on kirjaimia. Miten saan vastauksiin automaattisen rivin vaihdon? Tiedan etta eihan kukaan kirjoita sanoja ilman valilyonteja mutta jos joku kiusalla sen tekee niin sivu leveaa inhottavasti.

arclite [09.11.2006 07:25:56]

#

Itse olen käyttänyt alla olevan kaltaista js-koodia tarkistamaan syötteen, tai oikeammin varoittamaan käyttäjää siitä, että lomakkeen tiedot eivät ole täydellisesti täytetty. Varsinainen tarkistus tehdään palvelinpuolen ohjelmoinnin avulla.

Jos haluaa käyttää pelkästään php-pohjaista tarkistusta yksi hyvä vaihtoehto on lähettää formi samalle sivulle ja tedä tarkastus ylhäällä ennen lomaketta. Jos tietoja puuttuu voidaan siitä informoida ja asettaa kenttien arvot kuten käyttäjä oli ne yrittänyt täyttää.

function checkparent ( form ){
day = new Date();
year = day.getFullYear();
if (year-form.year.value <= 18 && form.par_firstname.value == "") {
			alert( "Olet 18 tai alle, joten annathan myös vanhempiesi tiedon." );
			    form.par_firstname.focus();
			    return false ;
			    }
			    if (form.firstname.value == "") {
			    alert( "Etunimi puuttuu." );
			    form.firstname.focus();
			    return false ;
			    }
			    if (form.lastname.value == "") {
			    alert( "Sukunimi puuttuu." );
			    form.lastname.focus();
			    return false ;
			    }
			    if (form.email.value == "") {
			    alert( "Sähköpostiosoite puuttuu." );
			    form.email.focus();
			    return false ;
			    }
			    if (form.phone.value == "") {
			    alert( "Puhelinnumero puuttuu." );
			    form.phone.focus();
			    return false ;
			    }

			    if (form.year.value == "0") {
			    alert( "Syntymävuosi puuttuu." );
			    form.year.focus();
			    return false ;
			    }
			    if (form.address.value == "") {
			    alert( "Osoite puuttuu." );
			    form.address.focus();
			    return false ;
			    }
			    if (form.zip.value == "") {
			    alert( "Postinumero puuttuu." );
			    form.zip.focus();
			    return false ;
			    }
			    if (form.city.value == "") {
			    alert( "Postitoimipaikka puuttuu." );
			    form.city.focus();
			    return false ;
			    }
			    if (form.id.value == "") {
			    alert( "Tunnus puuttuu." );
			    form.id.focus();
			    return false ;
			    }
			    if (form.password.value != form.password_verify.value || form.password.value.length < 4 ) {
										alert( "Salasanat eivät täsmää tai pituus ei ole 4-merkkiä." );
										form.password.focus();
										return false ;
										}

										return true ;
 }

Lebe80 [09.11.2006 11:31:20]

#

mizzou kirjoitti:

Taidan kuopata taman javascriptin kayton olisiko vinkkeja miten php voisi tarkastaa etta nimi- ja viesti-kentassa on tavaraa (ja jos on mahdollista tarkastaa maili osoite myos niin mista loytyisi siita tietoa).

Vaikka käytössäsi olisikin js-tarkistus, joudut silti laittamaan myös php-tarkistuksen. JavaScript tarkistus on melko yksinkertainen kiertää, eikä sitä kannatakaan laittaa kuin nopeuttamaan/helpottamaan tavallisten, hyväaikeisten käyttäjien toimintaa (ei sivulatauksia, jos lomakkeessa on esim. kirjoitusvirhe).
Php-tarkistuksia löydät tältäkin sivulta useamman. Pääpiirteittäin tarkistuksessa käyt läpi ainakin seuraavat asioita:

- Pakolliset kentät on täytetty
- Lomakkeen kaikki kentät sisältävät vain sallittuja merkkejä (esim. kirjaimia, numeroita, tietyt erikoismerkit)
- Mahdolliset sähköpostikentät sisältävät vain yhden @-merkin, eikä esim. cc: yms.

mizzou kirjoitti:

Miten saan vastauksiin automaattisen rivin vaihdon? Tiedan etta eihan kukaan kirjoita sanoja ilman valilyonteja mutta jos joku kiusalla sen tekee niin sivu leveaa inhottavasti.

katso php.net:n wordwrap -funktio.

https://www.php.net/manual/fi/function.wordwrap.php


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta