webForumDet fria alternativet

RegExp + piltangenterna

10 svar · 415 visningar · startad av Palle

PalleMedlem sedan apr. 20002 716 inlägg
#1

Jag använder följande kod för att förhindra att annat än siffror anges i formuäret:

[red]onkeyup="this.value=this.value.replace(/\D/g,'');"[/red]

Tyvärr så kan man heller inte flytta markören framåt och bakåt med piltangenterna
i textfältet om man skulle vilja ändra på det som man skrivit in.

Någon som har en lösning på detta? :)

@ndersMedlem sedan juni 200026 914 inlägg
#2

Så här kan man göra. Om det är den bästa / rättaste lösningen har jag dock ingen aning om.

onkeyup="if(event.keyCode!=37 && event.keyCode!=39) this.value=this.value.replace(/\D/g,'');"

Mvh

PalleMedlem sedan apr. 20002 716 inlägg
#3

Fungerar prima, tackar! :bire

@ndersMedlem sedan juni 200026 914 inlägg
#4

Fungerar inte alls helt prima, ju. ;)

Visst kan man flytta markören med piltangenterna, men ändrar man något i fältet hamnar markören sist i alla fall.

(Jag sitter och jobbar med samma problem, men jag funderar på om man helt enkelt ska göra ersättningen onblur istället.

Mvh

PalleMedlem sedan apr. 20002 716 inlägg
#5

Nja, ok då.. om man ska hårddra det. ;)

JojoxxMedlem sedan juni 20004 306 inlägg
#6

Så här kanske:

<input type="text" onkeyup="if(!this.value.match(/^\d+$/)){ this.value=this.value.replace(/\D/g,''); }">
PalleMedlem sedan apr. 20002 716 inlägg
#7

Jojoxx: Nu är vi nära mitt mål, dock inte helt perfektionerat ännu. ;) :e

Skriver man in ex '123' och sedan ändrar '1' till ex. 'D' så tas bokstaven bort - korrekt,
dock så hoppar nu curson till sista plats i textfältet igen, och det vill jag gärna undvika om det går.
Jag vill att bokstaven ska tas bort men att curson ligger kvar på platsen där bokstaven fanns.

Går det? :)

@ndersMedlem sedan juni 200026 914 inlägg
#8

Det finns ingen funktion typ "this.returnCursorToWhereItUsedToBeCauseThatsWhereWeWantIt()" som man kan köra inne i if-satsen? ;)
Jag kan dela på den med Palle. :)

Jag passar på att tacka Jojoxx jag också, trots att det inte är min tråd, för nu ser min funktion ut så här, och fungerar finemang:

function replaceChars(obj) {
	if(obj.value.match(/<|>/g))
		obj.value=obj.value.replace(/<|>/g,'');
}
spangoMedlem sedan juni 20006 147 inlägg
#9

Kanske kan den här tråden vara av intresse:
http://webxpertz.net/forums/showthread.php?t=29760

@ndersMedlem sedan juni 200026 914 inlägg
#10

Tack för trevlig länk, spango! :)

Erik JuhlinMedlem sedan maj 20007 625 inlägg
#11

Jag har skrivit så här på ett ställe:

function isDigit()
{
	return ((event.keyCode >= 48) && (event.keyCode <= 57));
}

<input type="text" name="x" onKeyPress="event.returnValue = isDigit();">

Förhindrar ju inte paste och liknande, men i kombination med Jojoxx script eller ännu hellre en kontroll i onSubmit så skulle det funka bra. :)

Genererad på 379 ms · cache AV · v20260730165559-full.f96bc7eb