Ensuring numeric input

simplsol at aol.com simplsol at aol.com
Wed Oct 26 22:21:28 EDT 2005


Michael,
You can also add zero to it; if it is a number then the result will be 
empty.
Paul Looney

-----Original Message-----
From: Dennis Brown <see3d at writeme.com>
To: How to use Revolution <use-revolution at lists.runrev.com>
Sent: Wed, 26 Oct 2005 21:07:09 -0400
Subject: Re: Ensuring numeric input

   Try using isNumber --from the docs: 
 
 the isNumber of value 
 isNumber(value) 
 
 isNumber(8) -- returns true 
 isNumber(1+5) -- returns true 
 isNumber(foo) -- returns false 
 
 Dennis 
 
 On Oct 26, 2005, at 8:34 PM, Michael J. Lew wrote: 
 
  > How can I prevent users from being able to make non-number values > 
in a field? Simply preventing non-numeric keys is not enough > because 
I need to prevent things that use characters that are in > valid 
numbers to make non-numbers like 1.2.3 or -1.2-3. 
 > 
  > I thought it would be relatively easy, but it might not be. Here is 
> the field script of a surprisingly complicated attempt: 
 > 
 > on keydown thekey 
 > if theKey is in "0123456789-." then --may be an allowable input 
  > -- but I still need to check whether the result would be a > valid 
number. 
 > put value(the selectedLine) into thisLine --current number 
 > put length(thisLine) into thisLineLen 
  > put the selectedCHunk into sc --returns character locations > from 
start of field 
 > --Need to find where the current line starts 
  > put offset(thisLine,me,min(0,word 2 of sc-thislinelen)) into > 
thisLineStart 
  > --The characters to skip bit is an attempt to prevent the > offset 
function 
 > -- from returning a match to an earlier line in the field. 
 > -- It needs the min function to prevent negative values. 
 > --Now see if the input would make a non-numeric result 
 > --First find where the selection point is in the line 
 > put word 2 of sc +1 - thisLineStart into theSelectionStartChar 
 > put word 4 of sc +1 - thisLineStart into theSelectionEndChar 
 > --I don't know why I had to add one to the values... 
  > put thisLineStart & return & theSelectionStartChar && > 
theSelectionEndCHar 
 > --Now test the input in the relevant place 
  > put theKey into char theSelectionStartChar to > theSelectionEndChar 
of thisLine 
 > --next line to help debugging 
  > --put thisLine & return & thisLineStart & return & > 
theSelectionStartChar && theSelectionEndChar 
 > if thisLine & "0" is a number then --should be OK 
  > --Needs the appended zero to allow a line to start with a > decimal 
point. 
 > pass KeyDown 
 > end if 
 > end if 
 > end keydown 
 > 
 > 
  > It seems to work, but it's an extraordinarily long and winding road 
> to get to a simple end-point. What am I missing? 
 > 
 > Thanks, 
 > Michael 
 > 
 > --> Michael J. Lew 
 > 
 > Senior Lecturer 
 > Department of Pharmacology 
 > The University of Melbourne 
 > Parkville 3010 put "-1" is a number 
 > Victoria 
 > Australia 
 > 
 > Phone +613 8344 8304 
 > 
 > ** 
 > New email address: michaell at unimelb.edu.au 
 > ** 
 > _______________________________________________ 
 > use-revolution mailing list 
 > use-revolution at lists.runrev.com 
  > Please visit this url to subscribe, unsubscribe and manage your > 
subscription preferences: 
 > http://lists.runrev.com/mailman/listinfo/use-revolution 
 > 
 
 _______________________________________________ 
 use-revolution mailing list 
 use-revolution at lists.runrev.com 
  Please visit this url to subscribe, unsubscribe and manage your 
subscription preferences: 
 http://lists.runrev.com/mailman/listinfo/use-revolution 

    



More information about the use-livecode mailing list