ugrás a tartalomhoz

Beviteli mezőben csak szám karakter leütésének engedélyezése

vikgfk · 2014. Jan. 18. (Szo), 13.42
Sziasztok
Van egy javascript kódom amivel beviteli mezőbe leütött billentyűzetet ellenőrzőm, ezt úgy hogy a beviteli mezőben csak szám alapú billentyű leütések jelennek meg.
A problémám az hogy egy űrlapnál csak egy beviteli mezőt tudok vele ellenőrizni.
Mármost nekem kilenc beviteli mezőt kellene leellenőriznem.
Ami problémám a kóddal hogy ha többször használom ugyanazt a kódot /az azonosító átírásával/ akkor az összes közül csak az utolsó javascript kód működik, a többi meg nem.
A kérdésem az hogy miképpen tudnám úgy átalakítani hogy több azonosítót is tudjak leellenőrizni?

<script type="text/javascript">
<!--
window.onload = function() {
document.getElementById('arRange').onkeypress = function(e) {
var c = (window.event ? e.keyCode : e.which);
if (isNaN(String.fromCharCode(c)) && c != 8 || c == 32 ) { return false; }
}
}
-->
</script>

'ccmRange'
'futott_km'
'uzemora'
'szelep_szam'
teljesitmeny
sajat_tomeg
ossztomeg
szall_szem_szam


Ezeket az azonosítókat szeretném még hozzáfűzni úgy hogy rendesen működjön az összes beviteli mezőn.
 
1

Az azonosító (ID) átírásával

mahoo · 2014. Jan. 18. (Szo), 15.05
Az azonosító (ID) átírásával mennie kell: http://jsfiddle.net/eWHC9/
2

javascript

vikgfk · 2014. Jan. 18. (Szo), 22.59
Köszi működik szuperül.
3

Nekem lenne pár észrevételem/javaslatom

Karvaly84 · 2014. Jan. 19. (V), 04.07
1. Használj kódszínezőt!

2. Van egy ilyen eseménykezelőd:
... function(e) {
var c = (window.event ? e.keyCode : e.which);
...
Evvel az a probléma, hogy Explorer 8-tól lefele hibára fut, ugyan is ha a window.event objektum létezik (teljesül a feltétel), akkor c felveszi a e.keyCode értékét, vagyis felvenné, de nem fogja mert ebben az esetben az eseménykezelő nem kap argumentumot, tehát az e nem definiált (undefined).

3. mahoo kolega verziójában a 2. pontban említett probléma nem lett orvosolva. Ezen felül a két blokk egy szó kivételével megegyezik. A redundanciát illik elkerülni ha nincs rá indok (képzeld el mondjuk 100 input mezőnél ez hogy néz ki).

4. A javaslatom: http://jsfiddle.net/karvaly84/N4xvj/, az input mezőkhöz hozzá adtam egy class="number" osztályt, ami alapján ki választom azokat a mezőket ahova csak számot lehet bevinni. Így lehet 1000 ilyen mező is a kód hossza nem változik.

IE8-tól kompatibilis, ha 7esre is kell tovább kel hekkelni, továbbá szebb lenne modernebb eseménykezelést alkalmazni. Ha kérdésed van írj!
4

Ez a megoldás sokkal jobb,

mahoo · 2014. Jan. 19. (V), 08.34
Ez a megoldás sokkal jobb, mint amit én írtam, használd azt!

Bár teszem hozzá amit én írtam, azt nem is megoldásnak szántam, egyszerűen csak zavart, hogy olyan dolog volt leírva, ami vagy nem lett kipróbálva, vagy olyan alapvető hibán bukott el a dolog, ami alapján azt gondolom, hogy az info amit írtál nem biztos, hogy valóban segít a kérdezőnek a dolgok megértésében. No, de lehet, hogy csak én voltam/vagyok túl borúlátó ezzel kapcsolatban... annyit tényleg írhattam volna, hogy nézzen utána, hogyan hozhatna létre egy eseménykezelőt az adott feladatra.