Connecting Tech Pros Worldwide Forums | Help | Site Map

Problem(s) on number auto-format function.

paolo
Guest
 
Posts: n/a
#1: Oct 16 '08
Thanks in advance to everyone that will give me help for these questions.

The function formatCurrency is used to auto-format a numeric value with thousands
separators and a decimal separator.

It works, but still has the following problems:

°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°° °°°°°°°°°°°°°°°°°°°°°°

Problem 1.

The function automatically inserts the decimal separator

onKeyPress="return(currencyFormat(this,',','.',eve nt))" //(where '.' is the decsep)

This is a problem because when a user tries to write 1000 (one thousand) it is formatted
as 10.00.

I need to modify the function so that it inserts the digit decSep only when the user
digits the decSep key.

°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°° °°°°°°°°°°°°°°°°°°°°°°°

Problem 2.

As it is the function only supports numbers with two decimals, but it would be useful to
pass the decimal position as an argument of the function itself.

I tried to add the argument decSepPos (decimal separator position)
and modify the function in these way:

------------

Line 7:

function currencyFormat(fld, milSep, decSep, e) {

Becomes

function currencyFormat(fld, milSep, decSep, decSepPos, e) {


-----------
line 44:

fld.value += decSep + aux.substr(len - 2, len);

becomes

fld.value += decSep + aux.substr(len - decSepPos, len);

--------------
line 59:

onKeyPress="return(currencyFormat(this,',','.',eve nt))">

becomes

onKeyPress="return(currencyFormat(this,',','.','3' ,event))">

where '3' is clearly an example.
-------------------------------------------------

This modification works well, but only when decSepPos is >=2.
If the passed value is 1 or 0 the function stops working well.

°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°° °°°°°°°°°°°°°°°°°°

Problem 3.

In firefox the TAB key does not work (while it works in ie).
This implies not to be able to switch from a textbox to another object using the tab key.I
tried to add line 16 the following line:

if (whichCode == 9) return true; // (9 is the keycode of TAB key)

Without obtaining any result.

°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°° °°°°°°°°°°°°°
Here is the sample page I'im working on
Thanks to everybody will support me on one or more of these problems.

Paolo

§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§ §§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§


<HTML>

<HEAD>

<SCRIPT LANGUAGE="JavaScript">

function currencyFormat(fld, milSep, decSep, e) {
var sep = 0;
var key = '';
var i = j = 0;
var len = len2 = 0;
var strCheck = '0123456789';
var aux = aux2 = '';
var whichCode = (window.Event) ? e.which : e.keyCode;
if (whichCode == 13) return true; // Enter
if (whichCode == 8) return true; // Delete
key = String.fromCharCode(whichCode); // take the key from keycode
if (strCheck.indexOf(key) == -1) return false; // Unvalid key
len = fld.value.length;
for(i = 0; i < len; i++)
if ((fld.value.charAt(i) != '0') && (fld.value.charAt(i) != decSep)) break;
aux = '';
for(; i < len; i++)
if (strCheck.indexOf(fld.value.charAt(i))!=-1) aux += fld.value.charAt(i);
aux += key;
len = aux.length;
if (len == 0) fld.value = '';
//if (len == 1) fld.value = '0'+ decSep + '0' + aux;
//if (len == 2) fld.value = '0'+ decSep + aux;
if (len 2) {
aux2 = '';
for (j = 0, i = len - 3; i >= 0; i--) {
if (j == 3) {
aux2 += milSep;
j = 0;
}
aux2 += aux.charAt(i);
j++;
}
fld.value = '';
len2 = aux2.length;
for (i = len2 - 1; i >= 0; i--)
fld.value += aux2.charAt(i);
fld.value += decSep + aux.substr(len - 2, len);
}
return false;
}

</script>

</HEAD>



<BODY>

<form>
Input value:
<input type="text" name="test" length="15"
onKeyPress="return(currencyFormat(this,',','.',eve nt))">
</form>
</BODY>
</HTML>

Dr J R Stockton
Guest
 
Posts: n/a
#2: Oct 16 '08

re: Problem(s) on number auto-format function.


In comp.lang.javascript message <48f76546$0$1086$4fafbaef@reader1.news.t
in.it>, Thu, 16 Oct 2008 18:10:15, paolo <panghileri@digitalminds.it>
posted:
Quote:
>Thanks in advance to everyone that will give me help for these questions.
Non si dovrebbe provare a formattare un campo di inserimento dati mentre
viene riempito dall'utente.

Leggi le FAQ di newsgroup, regolarmente pubblicato qui e / via / un link
qui sotto, in particolare la sezione "How do I convert a Number into a
String with exactly 2 decimal places?" ("Come faccio a convertire un
numero in una stringa con esattamente 2 decimali?") e il suo
collegamento al <http://www.merlyn.demon.co.uk/js-round.htm>.

È una buona idea leggere il newsgroup c.l.j ed il relativo FAQ. Veda sotto.

--
(c) John Stockton, nr London UK. ?@merlyn.demon.co.uk IE7 FF2 Op9 Sf3
news:comp.lang.javascript FAQ <URL:http://www.jibbering.com/faq/index.html>.
<URL:http://www.merlyn.demon.co.uk/js-index.htmjscr maths, dates, sources.
<URL:http://www.merlyn.demon.co.uk/TP/BP/Delphi/jscr/&c, FAQ items, links.
Sam --
Guest
 
Posts: n/a
#3: Oct 17 '08

re: Problem(s) on number auto-format function.


On Thu, 16 Oct 2008 20:35:22 +0100, Dr J R Stockton
<jrs@merlyn.demon.co.ukwrote:
Quote:
>In comp.lang.javascript message <48f76546$0$1086$4fafbaef@reader1.news.t
>in.it>, Thu, 16 Oct 2008 18:10:15, paolo <panghileri@digitalminds.it>
>posted:
Quote:
>>Thanks in advance to everyone that will give me help for these questions.
>
>Non si dovrebbe provare a formattare un campo di inserimento dati mentre
>viene riempito dall'utente.
>
>Leggi le FAQ di newsgroup, regolarmente pubblicato qui e / via / un link
>qui sotto, in particolare la sezione "How do I convert a Number into a
>String with exactly 2 decimal places?" ("Come faccio a convertire un
>numero in una stringa con esattamente 2 decimali?") e il suo
>collegamento al <http://www.merlyn.demon.co.uk/js-round.htm>.
>
>È una buona idea leggere il newsgroup c.l.j ed il relativo FAQ. Veda sotto.
come vedi Paolo, anche qui la risposta è sempre la stessa... :-)

Closed Thread