RSS

Tag Archives: javascript numeric text field

Restrict text field to accept only numeric number in javascript

First write the following two functions:

function extractNumber(obj, decimalPlaces, allowNegative)
{
 var temp = obj.value;

 // avoid changing things if already formatted correctly
 var reg0Str = '[0-9]*';
 if (decimalPlaces > 0) {
  reg0Str += '\\.?[0-9]{0,' + decimalPlaces + '}';
 } else if (decimalPlaces  0 && temp.charAt(0) == '-';
  var reg2 = /-/g;
  temp = temp.replace(reg2, '');
  if (hasNegative) temp = '-' + temp;
 }

 if (decimalPlaces != 0) {
  var reg3 = /\./g;
  var reg3Array = reg3.exec(temp);
  if (reg3Array != null) {
   // keep only first occurrence of .
   //  and the number of places specified by decimalPlaces or the entire string if decimalPlaces  0 ? reg3Right.substring(0, decimalPlaces) : reg3Right;
   temp = temp.substring(0,reg3Array.index) + '.' + reg3Right;
  }
 }

 obj.value = temp;
}
function blockNonNumbers(obj, e, allowDecimal, allowNegative)
{
 var key;
 var isCtrl = false;
 var keychar;
 var reg;

 if(window.event) {
  key = e.keyCode;
  isCtrl = window.event.ctrlKey
 }
 else if(e.which) {
  key = e.which;
  isCtrl = e.ctrlKey;
 }

 if (isNaN(key)) return true;

 keychar = String.fromCharCode(key);

 // check for backspace or delete, or if Ctrl was pressed
 if (key == 8 || isCtrl)
 {
  return true;
 }

 reg = /\d/;
 var isFirstN = allowNegative ? keychar == '-' && obj.value.indexOf('-') == -1 : false;
 var isFirstD = allowDecimal ? keychar == '.' && obj.value.indexOf('.') == -1 : false;

 return isFirstN || isFirstD || reg.test(keychar);
}

Then use the above functions from your input field as follows:

<input type="text" onblur="extractNumber(this,-1,false);" onkeyup="extractNumber(this,-1,false);" onkeypress="return blockNonNumbers(this, event, true, false);" />
Advertisements
 
Leave a comment

Posted by on June 23, 2011 in JavaScript, Mixed

 

Tags: