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

447

    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. Miksi jollain jää "talvi päälle"

      Huvittaa kastoa ullkona jotain vahempaa äijää joka pukeutuu edelleen kun olisi +5 astetta lämmittä vaikka on helle keli
      Maailman menoa
      296
      3058
    2. Mitä et hyväksy miehessä/naisessa josta olet kiinnostunut?

      Itse en halua, että miehellä olisi lapsia!
      Ikävä
      217
      1930
    3. Se katse silloin

      Oli hetki, jolloin katseemme kohtasivat. Oli talvi vielä. Kerta toisensa jälkeen palaan tuohon jaettuun katseeseen. Tunt
      Ikävä
      59
      1582
    4. Tiesitkö? Farmi Suomi Kirsikka Simberg on tämän julkkisnaisen tytär - Katso tyrmäävät mallikuvat!

      Oho, aikamoinen ylläri. Tiesitkö?! Kirsikka Simberg on yksi tämän kauden Farmi Suomi -kisaajista. Hänellä ei ole tuttu t
      Suomalaiset julkkikset
      2
      1370
    5. Kaipaaville

      Kerro sun tunteesi ja ajatukset tähän jos et uskalla irl!
      Ikävä
      79
      1251
    6. Tuhdit oluet kauppoihin. Miksi vastustaa?

      8% oluet kauppoihin mutta mikä siinä on että osa politikoista vstustaa ? Kauppa kuitenkin hinnoittelee vahvan oluen ni
      Maailman menoa
      266
      1188
    7. Miten haluaisit

      Että reagoisin jos näkisin sinut nyt?
      Ikävä
      80
      1052
    8. Sinua tulen kyllä ikävöimään pitkään nainen

      mutta oli pakko tehdä päätös oman mielenrauhan vuoksi. Toivottavasti saat elämältä kaiken mitä haluat.
      Ikävä
      52
      1041
    9. Tärkeä kysymys!

      Haluatko sinä, mies, minut?
      Ikävä
      80
      981
    10. Asiallinen lähestyminen

      Mitä on asiallinen lähestyminen?? Tietääkö tai tajuaako kukaan, varsinkaan miehet??? Eilen NELJÄNNEN kerran jouduin isk
      Sinkut
      144
      847
    Aihe