Toon posts:

[JavaScript]Invoer filter voor uints

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik heb een input veld:

<input type="text" name="MyInput" onKeyPress="checkKeyPressed('uint')">

In dit veld mogen alleen unsigned integers komen, dus daarvoor wil ik de functie "checkKeyPressed" gebruiken. Op dit moment ziet die functie er zo uit:
code:
1
2
3
4
5
6
7
8
9
10
11
12
function checkKeyPressed(datatype) {
    event.returnValue = true;
    event.cancelBubble = false;
    var keypressed = String.fromCharCode(event.keyCode);
    if (datatype == 'uint') {
        if (!keypressed.match(/\d/) ||
(keypressed.match(/[-]/) && (document.myForm.myInput.value.length == 0))) {
            event.returnValue = false;
            event.cancelBubble = true;
        }
    }
}


Deze functie werkt in principe goed, maar het probleem treedt op als er een waarde in het veld staat die geselecteerd is. Bijv: waarde is 666 en is geselecteerd, dan is vervolgens de lengte niet 0 als er op een knop wordt gedrukt, dus zal het input filter een de min niet accepteren.
Ik moet dus op iets anders checken, maar wat?

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 20:27

crisp

Devver

Pixelated

Je zou ondertussen eigenlijk ook nog eens de cursorpositie moeten gaan bijhouden. In feite ben je gewoon een eigen (IE-only) keyhandler aan het maken - waarom check je niet gewoon achteraf de gehele input? Het grote nadeel is namelijk dat je straks ook niet meer de pijltjestoetsen en backspace kan gebruiken tenzij je daar ook weer logica voor inbouwt...

ps, javascript hoort in W&G ;)

[ Voor 33% gewijzigd door crisp op 15-10-2003 08:56 ]

Intentionally left blank


  • whoami
  • Registratie: December 2000
  • Nu online
Inderdaad. Clientside stuff (JS, (D)HTML, ....) horen thuis in W&G

*schop*

P&W -> W&G

https://fgheysels.github.io/


Verwijderd

Topicstarter
Ops, ja klopt...wou 'm daar ook neerzetten, maar blijkbaar verkeert gegaan.