Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: JS: Tekstikenttä jossa vain numeroita ja yksi piste "."

Sivun loppuun

Thalassa [09.02.2014 19:17:09]

#

Tekstikenttä, johon sallitaan vain numerot ja mahdollisesti vain ja ainoastaan yksi piste ".". Ei muita merkkejä tai ei enempää pisteitä.

Ideoita?

Antti Laaksonen [09.02.2014 19:25:40]

#

Tässä tarkistus säännöllisellä lausekkeella:

<script>
function tutki(t) {
    if (t.value.search(/^[0-9]*\.?[0-9]*$/) == -1) {
        alert("Virhe!");
    }
}
</script>
<input type="text" onchange="tutki(this)">

Metabolix [09.02.2014 19:40:06]

#

Nykyään voisi käyttää ensisijaisesti HTML5:n pattern-tarkistusta, joka on käyttäjän kannalta paljon miellyttävämpi kuin tuollainen alert. Lisätietoa on esim. sivustolla http://html5pattern.com/. Vanhoja selaimia varten voi sitten laittaa JS-koodin.

Thalassa [09.02.2014 20:31:04]

#

Ok.

Itse asiassa tuossa olisi myös sellaisia ehtoja kuin

- pisteen jälkeen saisi olla vain kaksi desimaalia (myös nollia)
- ennen pistettä pitää olla ainakin yksi numero (myös nolla)
- ennen pistettä ei saa olla useampia kuin yksi 0, jos ainoa numero ennen pistettä on 0

Miten tällaisen toteutus?

Metabolix [09.02.2014 21:10:52]

#

Täyttäisikö tämä jo kaikki tarpeet:

<input type="text" pattern="(0|[1-9][0-9]*)(\.[0-9]{1,2})?" />

HTML5 [10.02.2014 14:40:35]

#

Jos haet kenttää, johon voi syöttää vain desimaalilukija, voit käyttää number-tyyppistä tekstikenttää:

<input type="number" step="0.01" min="0">

Step-attribuutti määrittää lukujen tarkkuudeksi sadasosat eli luvut ovat kaksidesimaalisia.

Attribuutti min määrittää kentän pienimmäksi sallituksi arvoksi 0:n, sillä ilmeisesti haluat sallia vain epänegatiiviset luvut.

feenix [10.02.2014 21:00:55]

#

HTML5 kirjoitti:

Jos haet kenttää, johon voi syöttää vain desimaalilukija, voit käyttää number-tyyppistä tekstikenttää:

Joka on siis working draft -vaiheessa vasta, eikä esimerkiksi uusin Firefox tue sitä vielä ja muissakin selaimissa tuki saattaa olla puutteellinen.

Thalassa [10.02.2014 21:02:19]

#

Metabolix kirjoitti:

Täyttäisikö tämä jo kaikki tarpeet:

<input type="text" pattern="(0|[1-9][0-9]*)(\.[0-9]{1,2})?" />

Kiitos! Tämä olikin juuri sitä mitä hain.

Olli [15.02.2014 10:08:02]

#

Käytä mielummin näin, mobiililaitteita varten:

<input type="number" pattern="(0|[1-9][0-9]*)(\.[0-9]{1,2})?" />

Yucca [16.02.2014 11:18:59]

#

Olli kirjoitti:

Käytä mielummin näin, mobiililaitteita varten:

<input type="number" pattern="(0|[1-9][0-9]*)(\.[0-9]{1,2})?" />

Pattern-määrite ei ole sallittu, kun input-elementti on number-tilassa. HTML5 CR, kohta 4.10.5.1.13.


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta