Nyt sain lomakkeeni vihdoin toimimaan, mutta miten saisin estettyä tyhjän lomakkeen lähettämisen? Tarkoitan tällä täysin tyhjää lomaketta, en sellaista että esimerkiksi yksi kohta lomakkeesta on täyttämättä.
Tyhjän lomakkeen lähettämisen esto...
peehoopee
9699
0Äänestä
Muut lukivat myös
Odottaa vastausta
Näihin keskusteluihin ei ole vielä vastattu. Ole ensimmäinen.
Vastaukset 9
Vanhimmat
muuten sitä ei voi oikeen tehdä, koska tarkistus pitää tehdä selaimen päässä.
Eli eka joku skripti, joka validoi formin
function validateOnSubmit()
{
if(document.formi.email.value == "")
{
return false;
}
else if(document.formi.address.value == "")
{
return false;
}
else return true;
}
jokaiseen
Alkuun ennen kun mitään on tulostettu sivulle, en ole varma toimiiko, kun nopsaan ajattelin:
if ( empty($_POST) ) {
header('Location: http://www.sunsaitti.net/lomake.html');
}
Tuo alkuun..
koska toi ajetaan vasta palvelimella. Toisekseen ei se POST tyhjä ole välttämättä, vaikka käyttäjä ei ole mitään syöttänyt. Selain yleensä lähettää submit-napinkin ja sitten on lisäksi vielä koodaajaan mahdollisesti asettamat hidden-kentät
No, näinpä se onkin. :|
Mutta silti musta tuo tapa on hyvä, kun ei olla javascritin varassa, vaikka se tilanne harvoin varmaan tuleekaan vastaan. Tuota voi kuitenkin hiukan koodata lisää jolloin tuon submitin voi sivuuttaa.
Ainahan se lomakkeelta tullut data pitää kuitenkin tarkistaa palvelimella. Sieltähän voi lähettää vaikka apuohjelmaa käyttäen ihan mitä vaan.
Tärkeää on mielestäni se, että lomakkeessa on normaali submit-nappi. Näin ollen se lomake lähtee, vaikka ois javascript disabled.
onchange ja onsubmit-handlerit toimii sitten, jos javascript on päällä. Niillä saa taas käyttäjän syötteen muodon ainakin tarkistettua ja ei lähetetä kamaa turhaan netin yli, jos syöte on alunperinkin väärin.
On kun, ei lomaketta lähetettäessä tehdä tarkistuksia, vaan sitten kun se tulee perille.
Eli, jos tiettyjen lomakkeiden kenttien arvot ovat tyhjiä, niin palautat lomakkeen täyttäjälle virheilmoituksen ja mahdollisuuden täyttää uudestaan lomakkeen. Muussa tapauksessa lomakkeen arvot talletetaan ja lähetetään kiitos viesti. Tällä tavalla se oikeaoppinen ohjelmointi tehdään ja vältytään turhalta työltä, niin ihmis- kuin konetyöltäkin.
*On kun, ei lomaketta lähetettäessä tehdä tarkistuksia, vaan sitten kun se tulee perille.*
Miksi kuluttaa aikaa ja palvelimen resursseja, kun saman tarkistuksen voi tehdä jo selaimella?
Tietenkin samat tarkistukset tehdään myös palvelin päässä, jolloin lomake toimii kaikilla.
*Tällä tavalla se oikeaoppinen ohjelmointi tehdään ja vältytään turhalta työltä, niin ihmis- kuin konetyöltäkin.*
JS lomakkeen tarkistus on helppo tehdä joten ei siinä paljo työtä ole. Eikä tuo ole turhaa, nopeuttaa ja auttaa käyttäjiä.
Tietenkin riippuu tapauksesta miten kannattaa toteuttaa.
Käyttäen _if ja _else