PDA

Volledige versie bekijken : cijfers tellen van een input field


WebBees
%Europe/Berlin %764 %2009, 19:21
Ik ben een scriptje aan het uitwerken waar de bezoeker zijn gsm nummer moet opgeven, daarna wordt er op een button gedrukt en dan controleert het script of er het juist aantal cijfers zijn ingegeven. (Er wordt ook gecontroleerd en gecorrigeerd bij leestekens, spaties en letters)...

input text field = input_txt
dynamic text field (voor errors) = output_txt
button = verzenden_btn

stop();

this.output_txt.text = "";

function numOnlyMaxLen(maxLen, inputTxt, onSuccess) {
var theText = input_txt.text;
if (theText.length == maxLen) {
onSuccess();
} else {
noSuccess();
}
var replacement = "";
for (var i = 0; i<theText.length; i++) {
var curCode = theText.charCodeAt(i);
if (curCode<48 || curCode>57) {
input_txt.text = replacement;
} else {
replacement += theText.charAt(i);
}
}
}

this.onEnterFrame = function() {
verzenden_btn.onRelease = function() {
numOnlyMaxLen(10,input_txt,onSuccess);
};
};

function onSuccess() {
gotoAndStop(15);
}
function noSuccess() {
output_txt.text = "Foutief GSM nummer!";
}


Nu alles werkt... :)
Niet alles dus , als ik een juist nummer ingeef (10 cijfers) en druk dan op de button, dan krijg ik een error. Als ik zonder wijzigen nog eens druk, gaat ie verder...

Kan iemand me vertellen waarom ik 2 keer moet drukken?

Thx

Jan
%Europe/Berlin %768 %2009, 19:27
this.onEnterFrame = function() {
verzenden_btn.onRelease = function() {
numOnlyMaxLen(10,input_txt,onSuccess);
};
};
Door dat in een onEnterFrame te zetten zeg je dus 30 keer per seconde wat die knop voor actie heeft.
1 keer lijkt me voldoende...

verzenden_btn.onRelease = function()
{
numOnlyMaxLen(10,input_txt,onSuccess);
};
var replacement = "";
for (var i = 0; i<theText.length; i++) {
var curCode = theText.charCodeAt(i);
if (curCode<48 || curCode>57) {
input_txt.text = replacement;
} else {
replacement += theText.charAt(i);
}
}

Da's wel een erg omslachtige manier, terwijl Flash daar een ingebouwde methode voor heeft:
input_txt.restrict="0-9"
Op die manier kan een gebruiker enkel cijfers in je input veld ingeven. ;)

En ook het maximum aantal characters kan je instellen:
input_txt.maxChars=10;
Al moet je nog wel checken of het er niet minder dan 10 zijn dan.

Er zijn speciale tags [as] voor actionscript met syntax highlighting ipv die grijze code(leest toch wat handiger voor ons):
http://img175.imageshack.us/img175/3632/forumtagsae7.jpg

Groeten,
Jan

WebBees
%Europe/Berlin %333 %2009, 08:59
@ Jan : Top...

weer wat bijgeleerd :)
Dit is inderdaad eenvoudiger...

Ik heb nog een 'dom' vraagje: om de bezoeker 10 karakters te laten invullen, moet ik deze code gebruiken:

input_txt.maxChars=11;

Waarom is dit?

Jan
%Europe/Berlin %440 %2009, 11:34
@ Jan : Top...

weer wat bijgeleerd :)
Dit is inderdaad eenvoudiger...

Ik heb nog een 'dom' vraagje: om de bezoeker 10 karakters te laten invullen, moet ik deze code gebruiken:

input_txt.maxChars=11;

Waarom is dit?
Volgens mij komt dit doordat Flash zelf een "\n" of "\r" in een (multiline) input textfield zet (waarom dat zo is weten 'we' niet).
Het beste bij een inputtextfield is om bovenaan je script altijd expliciet te starten met:
input_txt.text="";

Als je "Auto kern" uitschakelt is dat probleem er ook niet denk ik, en bij een single line input textfield ook niet.

Groeten;
Jan