JavaScript - Lomakkeisiin liittyvää

Lomake-kenttä on jäänyt täyttämättä

Lomakkeita tuotetaan www-sivulle HTML-elementeillä ja lomakkeiden lomakekenttiin kirjoitettuja tietoja käsitellään ohjelmointikielillä (esim PHP) toteutetuilla algoritmeillä ja funktioilla.
JavaScript:llä voidaan tarkistaa onko jokin lomakekenttä tyhjä sekä antaa tyhjästä kentästä ilmoitus www-sivulla (onnistuu PHP:lläkin).


Täyttämättömästä lomakekentästä annetaan allert-ilmoitus:


  JavaScript-koodaus, sijoita head-elementissä script-elementtiin:
  
  <script>
    function tarkistaEmail() {
      var x = document.forms["omaEmail"]["email"].value;
      if (x == "") {
        alert("Oma email puuttuu. Ole hyvä, anna email.");
        return false;
      }
    }
  </script>
  
  
  HTML-koodaus, sijoita haluamaasi kohtaan www-sivun koodaukseen:
  
  <form name="omaEmail" action="/lomakefunktio.php" onsubmit="return tarkistaEmail()" method="post">
   eMail: <input type="text" name="email">
   <input type="submit" value="Lähetä">
  </form>
  
  

Jätä lomakekenttä tyhjäksi ja paina Lähetä-painiketta:

eMail:


TEHTÄVÄ 1 Tyhjän lomakekentän lähettäminen avaa
samanlaisen "laatikon" kuin tämä missä tehtävän tässä on.

Tarvitset tehtävässä yllä käytettyä koodausta sekä
Kikka-paikka kohdan 2 esimerkin koodauksia ja CSS-muotoiluja.

Huomaa. Lomakefunktio nimeltään lomakefunktio.php puuttuuu eli sellaista ei ole.
(action="/lomakefunktio.php")

Tämä on testattu tehtävä ja ratkaisu on löydettävissä.




Tyhjä lomakekenttä ja kentän numeroarvon tarkistus

Lomake-kentällä voidaan asettaa minimi ja maksimiarvo sekä annettu arvo voidaan tarkistaa tai ilmoittaa kentän olevan tyhjä.
Esimerkissä lomakekenttään hyväksytään arvoksi 100 - 200. jos arvo on ali tai yli, siitä ilmoitetaan tai jos kenttä on jätetty tyhjäksi annetaan siitäkin ilmoitus:

Testaa seuraavasti: 
   1. Paina OK 
   2. Anna kentään numero-arvo 100 - 200 ja paina OK

Esimerkin CSS-ohjeet ja HTML-koodaus:


  CSS-ohjeet:
  .variRED{
    color: RED;
  }
  .variBLUE{
    color: BLUE;
  }
  .variGREEN{
    color: GREEN;
  
  HTML- ja JS-koodaukset:
  
  <pre  class="variGREEN"> Testaa seuraavasti: 
   1. Paina OK 
   2. Anna kentään numero-arvo 100 - 200 ja paina OK </pre>

  <input id="rajat" type="number" min="100" max="200" required>
  <button onclick="tarkistaKentta()"> OK </button>

  <p  class="variRED" id="arvot"> </p>

  <script>
  function tarkistaKentta() {
    var syote = document.getElementById("rajat");
    if (!syote.checkValidity()) {
      document.getElementById("arvot").innerHTML = syote.validationMessage;
    } else {
      document.getElementById("arvot").innerHTML = 
	  "<p class='variBLUE'> Valittu arvo sallituissa rajoissa ! </p>";
    } 
  } 
  </script>
  


Asetuksia valittujen arvojen ilmaisuihin (DOM):

Asetus Selite, arvot tosi ..
validity jos käyttäjän viesti kelvollisesti asetettu
validationMessage jos elementin arvot eivät ole saman tyyppisiä kuin asetetulla atribuutilla
willValidate jos elementin arvo on suurempi kuin asetettu maksimiarvo

Taulukon, yllä, asetusten sijainti JS-koodauksessa, esimerkki:

document.getElementById("arvot").innerHTML = syote.validationMessage;


Metodeita kelvollisten arvojen tutkimiseen:

Metodi Selite, arvot tosi ..
customError jos käyttäjän viesti kelvollisesti asetettu
patternMismatch jos elementin arvot eivät ole saman tyyppisiä kuin asetetulla atribuutilla
rangeOverflow jos elementin arvo on suurempi kuin asetettu maksimiarvo
rangeUnderflowt jos elementin arvo on pienempi kuin asetettu minimiarvo
stepMismatch jos elementin arvo ei ole sopivin askelein valittu
tooLong jos elementin arvo ylittää maxLength-atribuutin arvon
typeMismatch jos elementin arvo on väärän tyyppinen
valueMissing jos elementillä ei ole vaadittua arvoa
valid jos elementillä on vaadittu arvo

Esimerkki asetettua minimiarvoa pienemmän arvon ilmoittamisesta käyttäjälle

Lomake-kentään, input-elementille voidaan asettaa (esimerkit):
minimi- ja maksimiarvo (min="100" max="200"),
minimiarvo (min="20") tai
maksimiarvo (max="120").

Lomakekenttä hyväksyy 50 tai suurempia lukuja, kokeile numeroarvoilla:

Esimerkin HTML- ja JS-koodaus (CSS-ohjeet samat kuin edellisessä esimerkissä):


  HTML- ja JS-koodaukset:
  
  <p class="variBLUE">
    Lomakekenttä hyväksyy 50 tai suurempia lukuja, kokeile numeroarvoilla:
  </p>

  <input id="arvo1" type="number" min="50">
  <button onclick="onkoSuurempi()"> OK </button>
  <p id="tulosA"> </p>

  <script>
   function onkoSuurempi() {
    var ilmoitus = "";
    if (document.getElementById("arvo1").validity.rangeUnderflow) {
      ilmoitus = "<p class='variRED'> Antamasi arvo on liian pieni, anna uusi arvo. </p>";
    } else {
      ilmoitus = "<p class='variGREEN'> Annoit sopivan arvon. </p>";
    } 
    document.getElementById("tulosA").innerHTML = ilmoitus;
   }
  </script>
  


Esimerkissä (yllä) voi ilmoitus-muuttujien kohdalla käyttää esimerkiksi funktio-kutsuja tai sijoittaa muuttujiin CSS-muotoilut ilmoitukset.



JavaScript tutkii onko lomake-kenttä täytetty

JavaScript:llä on mahdollista tutkia onko lomakekenttä tai -kentät täytetty ennen kuin lomakkeen tiedot lähetetään www-palvelimella olevalle ohjelmalle.
Esimerkissä sijoitetaan form-lomake, CSS-ohje ja JavaScript koodaus www-sivun koodaukseen sekä PHP-tiedosto jolle lomake lähettää lomakkeen tiedot www-palvelimelle:


Etunimi:

Esimerkin www-sivulle tarvittava CSS-ohjeet sekä HTML- ja JavaScript.koodaukset:


  CSS-ohje:
  .variBLUE{
    color:BLUE:
  }
  
  HTML- ja JS-koodaus:
  
  <form id="paluu" name="omaLomake" action="LOMAKE/lomakeTESTI.php" onsubmit="return tarkistaLomake()" method="post">
    <span class="variBLUE">Etunimi:</span>  <input type="text" name="eNimi">
    <input type="submit" value="LÄHETÄ">
   </form>

  <script>
   function tarkistaLomake() {
     var etunimi = document.forms["omaLomake"]["eNimi"].value;

      if (etunimi == "") {
        alert("Etunimi puuttuu, anna etunimesi");

      return false;
     }
   }
  </script>
  


Esimerkki-koodaus lähettää etunimi-tiedon PHP-tiedostolle (lomakeTESTI.php) jonka koodaus on alla:


  <!DOCTYPE HTML> 
  <html lang="en"> 
  <html> 
  <head>
   <meta charset="UTF-8"> 
   <title>TESTISIVU
   <style>
     body{
      background-color: #505050;
      color: yellow;
     }
     .container {
       position: sisalto;
     }
     .ilmoitus {
	   position: absolute;
       left: 0;
       top: 50%;
       width: 100%;
       text-align: center;
       font-size: 18px;	
     }
   </style>
  </head>
  <body>
  
  <div class="sisalto">
   <div class="ilmoitus">
     <p>Lähetit JavaSScript-oppaan lomakkeella tietoja PHP-ohjelmaan www-palvelimelle.<p>
      Etunimi: <?php echo $_POST["eNimi"]; ?> <br>
  
     <p> Kiitos yhteydenotostasi.<br> Otamme pikaisesti yhteyttä sinuun.<br>
        (ilmoitus sulkeutuu automaattisesti 4 sekunnin kuluttua)</p>
   </div>
  </div> 
  <script type="text/javascript">
   (function(){
    setTimeout(function(){
      window.location="http://tietokanta.edu.hel.fi/opetus/opiJS/sivu10.html#paluu";
    },4000); /* 1000 = 1 second*/
   })();
  </script>
  
 </body>
 </html>