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.
Javascript > Lomakkeiden käsittelystä
4
602
Vastaukset 4
- 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
- 1711492
En ehkä onnistu siinä
Kovasti minä yritän näyttää kauniilta, vain sinua varten, mutta en taida onnistua siinä.58725Muistakaa pojat tämä.
Mies joka haluaa naisen, löytää keinon. Ei epäröi eikä hämmennä. Tekee kaiken eteenne.88698Muhun rakastuu kaikki naiset, mut mä en rakastu niihin
Mun vaatimustaso on 10+ Mut mua tavottelee 7+ naiset203578- 48536
- 125518
- 37516
Viesti jonka haluaisit lähettää...
hänelle. Onko jokin pieni tunniste jonka vain te tiedätte. Onko naiselta miehelle tai toisinpäin, joku joku päivämäärä15490- 25483
Pahoin pelkään nainen
että pidät minua epäempaattisena, itsekeskeisenä, narsistisena ja kylmänä ihmisenä. Oletko koskaan ajatellut, että minus49479