By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
434,795 Members | 1,242 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 434,795 IT Pros & Developers. It's quick & easy.

Problem(s) on number auto-format function.

P: n/a
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>
Oct 16 '08 #1
Share this Question
Share on Google+
2 Replies


P: n/a
In comp.lang.javascript message <48**********************@reader1.news.t
in.it>, Thu, 16 Oct 2008 18:10:15, paolo <pa********@digitalminds.it>
posted:
>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.
Oct 16 '08 #2

P: n/a
On Thu, 16 Oct 2008 20:35:22 +0100, Dr J R Stockton
<jr*@merlyn.demon.co.ukwrote:
>In comp.lang.javascript message <48**********************@reader1.news.t
in.it>, Thu, 16 Oct 2008 18:10:15, paolo <pa********@digitalminds.it>
posted:
>>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... :-)

Oct 17 '08 #3

This discussion thread is closed

Replies have been disabled for this discussion.