Javascript > Lomakkeiden käsittelystä

PekiT

Mikä olisi helpoin tapa estää seuraava asia:

Internet-sivulla on lomake, jossa on useita kenttiä (nimi, email jne.) ja viimeisenä "lähetä"-painike.

Jos ensimmäiseen kenttään (tai mihin tahansa muuhunkin) kirjoittaa ja painaa enteriä (esim. vahingossa), niin lomake lähetetään.

Yritin Javascriptillä selvitä tuosta (olen tosin ihan aloittelija siinäkin), että jokainen kenttä olisi pakollinen, eikä lomaketta lähetetä ennen kuin jokaisessa on tekstiä. Mutta tuo ei ole hyvä tapa, koska kaikkia kenttiä ei voi tehdä pakolliseksi käytännön syistä.

Eli tiivistettynä: Enterin painaminen tekstikentässä pitäisi saada "pois päältä" :)

Onnistuisihan tuo tosin niin, että jokainen tekstikenttä olisikin "boxi" mutta ei sekään tunnu oikein järkevältä (?)

Ei tuollaista varmaan voisi esim. CSS:llä tehdä (?)

Tuhannet kiitokset jo etukäteen, jos joku jaksaa vaivautua.

4

574

    Vastaukset

    Anonyymi (Kirjaudu / Rekisteröidy)
    5000
    • Piru

      Meinaan toi enter == lähetys tossa formissa.

      vaikka pisti onSubmit="return metodi();"

      ja metodi palautti false, niin lähtipä kuitenkin.

      Sitten kun siitä selvittiin, niin eipä toimi NetScapella samalla tavalla tietenkään.

      Seuraava räpellys ei lähetä, jos painaa enteriä ja toimii sekä NS 7.1 ja IE 6.0. Formi lähtee, kun kentässä on tekstiä ja Submittia painetaan






      document.onkeypress = check_submit;
      document.onmousedown = check_submit;

      function check_submit(e)
      {
      //Netscape välittää eventin muuttujassa e ja IE ei
      if (!e)
      {
      var e = window.event;
      var target= e.srcElement.value;
      }
      else target = e.target.value;

      if(e.keyCode == 13)
      {
      alert("täytä kentät ja lähetä painamalla Submit-nappia hiirellä!");

      }

      else if(target == "Submit" && document.formi.txt.value != "")
      {

         document.formi.submit();

      }
      }

    • MachuPichu

      Tämä oli paha saada toimimaan eri selaimissa, mutta sain tehtyä lyhyen skriptinpätkän ilman selaimen version tutkimista. Huomaa että kaikki "toimenpiteet" funktiossa TorjuEnter eivät ole tarpeellisia kaikissa selaimissa mutta niistä ei ole myöskään haittaa.

      Tämän pitäisi toimia IE5 , NN7.0 / Mozilla1.0 , Opera7 selaimissa (en ole testannut Macin Safari selainta):




      function TorjuEnter(evt) {
      evt = (evt) ? evt : event;
      var charCode = (evt.charCode) ? evt.charCode :
      ((evt.which) ? evt.which : evt.keyCode);
      if (charCode == 13) {
      if (evt.preventDefault)
      evt.preventDefault();
      else
      evt.returnValue = false;
      if (evt.stopPropagation)
      evt.stopPropagation();
      else
      evt.cancelBubble = true;
      return false;
      } else {
      return true;
      }
      }




      Käyttö:





      Machu

    • Testbrain

      Yllä jo saattaa olla päteviä vastauksia, mutta itse ehkä päätyisin seuraavanlaiseen ratkaisuun: Lähetä-napin yläpuolelle laitetaan yksi Check Box ja teksti "Olen tarkistanut lomakkeen oikeellisuuden." Check Box laitetaan oletuksena pois päältä, samoin Lähetä-nappi on oletuksena disabloitu. Kun Check Box valitaan, niin JavaScriptillä muutetaan myös Lähetä-nappi "Enabloduksi".

    • tarkista kentät

      Tietämättä tarkemmin mihin käyttöön lomakkeesi tulee, itse toteuttaisin kyllä tarkistuksen. Korvaa submit normaalilla painikkeella ja suorita lomakkeen lähettäminen skriptistä käsin.

      Lomakkeen tarkistushan käy näppärästi looppaamalla kaikki kentät ehtolauseen lävitse, joka korostaa ongelmalliseet kohdat punaisella.

      Mikäli lomakkaakeesi on riippuvainen javascript tuesta, on hyvä että myös lähettäminen riippuu siitä.

    Ketjusta on poistettu 0 sääntöjenvastaista viestiä.

    Luetuimmat keskustelut

    1. SDP jo 100 % suositumpi kuin persut

      Kertoo Hesarin uusin kannatuskysely. Demareiden kannatus on miltei tuplat verrattuna persuihinl. Suomen kansa ei selväst
      Maailman menoa
      115
      10773
    2. Voiko normaali ihminen ryhtyä vasemmistolaiseksi?

      Tätä jäin pohdiskelemaan.
      Maailman menoa
      255
      4656
    3. SDP haluaa 40 000 nettomaahanmuuttajaa

      SDP:n Suunnanmuutos-vaihtoehtobudjetissa, käy ilmi, että demarit itse asiassa vaativat räjähdysmäistä ”työperäisen” maah
      Maailman menoa
      177
      4021
    4. Orpo: Velkajarrua vastustavaa puoluetta vaikea ajatella hallitukseen

      No Minja Koskelan kommunistipuolue jäi ulos tuosta. Kaikki eduskuntapuolueet vasemmistoliittoa lukuun ottamatta sopivat
      Maailman menoa
      177
      3513
    5. PS ylivoimainen nousija myös HS:n gallupissa, SDP laskee taas

      https://www.verkkouutiset.fi/a/hs-gallup-sdpn-suosio-laskee-ps-nousussa/#0a7d2507 Ylivoimainen viime kuukausien nousija
      Maailman menoa
      82
      3349
    6. Mikä tämä henkilö mahtaa touhuta Parkanossa

      Kamalaa https://www.ylasatakunta.fi/teksti/pirkanmaan-karajaoikeus-vangitsi-koiran-tappamisesta-epaillyn-6.68.127794.b58
      Parkano
      42
      3137
    7. Valtavasti suomalaisia asunnottomina, mutta ei yhtään somalia

      tai muuta kehitysmaalaista. Mites tässä näin kävi? Tiedän hyvin, että esim. somaleita lentää ulos mm. Hekan asunnoista,
      Maailman menoa
      79
      3126
    8. Ikävä sinua mies

      Vuosia kuluu, mutta tunteet ei ole hävinnyt. Tasoittuneet toki, kun ei olla nähty. Järki palannut päähän kuitenkin. Se i
      Ikävä
      27
      2689
    9. Hienoa! Eduskunta luopui käteisen käytöstä

      Nyt tuo sama muutos pitää saada myös muuhun yhteiskuntaan. Käteistähän ei tarvitse tänä päivänä enää kuin rikolliset.
      Maailman menoa
      68
      1831
    10. Kiinnostaa - ei kiinnosta - kiinnostaapas

      Selittäkää hämmentyneelle miksi miehiä ei ikinä kiinnosta silloin, kun sitä olisi itsekin kiinnostunut? Sitten kun siirt
      Sinkut
      180
      1665
    Aihe