onkeyup event javascript werkt niet.

Status
Niet open voor verdere reacties.

dollo

Gebruiker
Lid geworden
1 jan 2008
Berichten
118
hallo,
ik heb een probleem met het onkey up event.
als ik op een knop druk gebeurt er niets als ik event verander in een string krijg ik de alert test te zien.
ik ben hier al tijden mee bezig maar kom er niet uit
de code van het invoerveld:

Code:
var inp = document.createElement('input');									
inp.className = 'bginput';
inp.onkeyup =  function() { cijfers(event); };

de code van de eventhandler

Code:
function cijfers(evt) {
        alert('test');
	var charCode = (evt.which) ? evt.which : evt.keyCode;
	if ((charCode >= 48 && charCode <=57) || charCode == 8)
	{
	return true; 
	} // Alleen maar cijfers en backspace toegestaan
return false;
}

alvast bedankt voor de hulp:D
 
Hm, ik kan nergens vinden dat het returnen van true of false bij 'onkeyup' iets zou moeten doen?

Weet je zeker dat dat hoort te werken, en dat je niet zelf het teken/de tekens weg moet halen?
 
In welke browser test je het? Volgens mij heeft alleen Internet Explorer een globaal event object dat je op deze manier aan kan roepen. Oftewel, je code loopt dan vast op cijfers(event); omdat het object event niet bestaat.

Een andere manier om dit op te lossen is door met een regular expression na elke keyup te kijken (search method) of er in de value van de input een illegaal karakter voorkomt. Vervolgens verwijder je die met een regular expression replace en geef je de melding. Als je het op deze manier doet hoef je niet te kijken welke toets er ingedrukt was, de functie kijkt naar welk karakter er bij de value is toegevoegd.

Antwoord 2:

Je kan volgens mij ook gewoon de aanroep inp.onkeyup = function() { cijfers(event); }; veranderen in inp.onkeyup = cijfers; en dan je functie aanpassen als

PHP:
function cijfers(evt) {
if(!evt) var evt = window.event;
        alert('test');
 
Laatst bewerkt:
inp.onkeyup = cijfers; word meteen aangeroepen tijdens het laden van de pagina.

en weet je hoe ik in ff een event kan opvragen daar moet hij net namelijk op doen.
het elke keer verwijderen van een letter of cijver die niet aanwezig mag zijn lijkt me niet echt een goede oplossing helaas.

bedankt voor jullie reacties :D:thumb:
 
en weet je hoe ik in ff een event kan opvragen daar moet hij net namelijk op doen.

Dat heb ik aangegeven in het tweede antwoord. Firefox stuurt de event automatisch door als argument wanneer je de event registreert als inp.onkeyup = cijfers;


het elke keer verwijderen van een letter of cijver die niet aanwezig mag zijn lijkt me niet echt een goede oplossing helaas.

Nee? Het is praktisch hetzelfde wat je nu doet, alleen ben je dan niet afhankelijk van de keycode, maar van het werkelijke karakter dat in de input staat:
HTML:
<input type='text' onkeyup='alleenCijfers(this)'/>
PHP:
function alleenCijfers(obj) {
    if(obj.value.search(/[^0-9 ]/g) != -1) {
        alert("Mag alleen cijfers of spaties bevatten");
        obj.value = obj.value.replace(/[^0-9 ]/g,"");
    }
}
 
wat ik bedoelde niet echt goede oplossing is dat de gebruiker nog de letter kan zien als ik keycode check kan ik ervoor zorgen dat er niets gebeurt in het veld "niets zichtbaars"

maar nu ik dit heb getest ben ik niet ontevreden:D

nog een klein vraagje hoe kan ik er voor zorgen dat punten ook zijn toegestaan maar spaties niet:o

tot dusver bedankt :D:)
 
PHP:
function alleenCijfers(obj) {
    if(obj.value.search(/[^0-9.]/g) != -1) {
        obj.value = obj.value.replace(/[^0-9.]/g,"");
        alert("Mag alleen cijfers of punten bevatten");
    }
}

Geen dank.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan