Regular expression to enforce 2 digits after decimal point
<html>
<script>
function doCheck(txtidval)
{
var i,exceptions=[8,46,37,39,13,9]; // backspace, delete, arrowleft & right, enter, tab
var isException=false;
var isDot=(190==event.keyCode); // dot
//Value which is typed
var k=String.fromCharCode(event.keyCode);
for (i=0;i<exceptions.length;i++)
{
if(exceptions[i]==event.keyCode)
isException=true;
}
if(isNaN(k) && (!isException) && (!isDot))
{
event.returnValue=false;
}
else
{
var p=new String(document.getElementById(txtidval).value+k).indexOf(".");
if((p<document.getElementById(txtidval).value.length-2 || isDot) && p>-1 && (!isException))
{
event.returnValue=false;
}
else if(document.getElementById(txtidval).value.length>=3 && (!isException) && p==-1)
{
//dot checking
if(event.keyCode != "190")
{
alert(document.getElementById(txtidval).value);
event.returnValue=false;
}
}
else if(document.getElementById(txtidval).value>=3)
{
alert(document.getElementById(txtidval).value);
}
}
}
</script>
<body>
<input type="textbox" id="txtid" onkeydown="doCheck('txtid')"/>
</body>
</html>
i dont need output like .21 and also after entering 575 when moving curson in front of 575 it allows dot(".") so please kindly correct it
/(\d*\.\d\d)\D*/ Should do it. You can take result[1] to parseFloat to read it.
Hi Wbport Thanks for answering ..where we use that in my code ?
Code:
result = valueFromATextArea.match(/(\d*\.\d\d)\D*)
if (result == null)
alert("Insert appropriate squawk here");
else
var theNumberIWantToLookAt = parseFloat(result[1]);
Last edited by wbport; 01-09-2013 at 06:37 AM .
Reason: Add CODE tags to format
Thanks wbport
An alternative solution...
Code:
<!DOCTYPE HTML>
<html>
<head>
<title> Untitled </title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body>
<input type="text" onkeyup="return processNumber(this)" value="">
<script type="text/javascript">
function processNumber(info) {
var v = info.value;
var n = v.split('.');
if (n[1] != undefined) { v = n[0]+'.'+n[1].substring(0,2); }
info.value = v;
return true;
}
</script>
</body>
</html>
My first line should have read: result = valueFromATextArea.match(/(\d*\.\d\d)\D*/ )
The last slash was needed to terminate the regular expression.
Thread Information
Users Browsing this Thread
There are currently 1 users browsing this thread. (0 members and 1 guests)
Tags for this Thread
Posting Permissions
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts
Forum Rules
Bookmarks