title: Allowing only numbers and one decimal
body: <p>Guys and gals i have this piece of JavaScript code that only allows for numbers and one decimal period.  The problem i'm having is that when i tab over to my textbox controls it highlights the value but i have press backspace to erase then enter a number. That is an extra keystroke that i want to prevent.</p>
  
  <p>Props to the guy who created it found (<a href="http://www.coderanch.com/t/114528/HTML-CSS-JavaScript/decimal-point-restriction" rel="nofollow">http://www.coderanch.com/t/114528/HTML-CSS-JavaScript/decimal-point-restriction</a>) and here is the code.  I put this on keyUp event.</p>
  
  <pre><code> &lt;script&gt;
    // Retrieve last key pressed.  Works in IE and Netscape.
    // Returns the numeric key code for the key pressed.
    function getKey(e)
    {
      if (window.event)
         return window.event.keyCode;
      else if (e)
         return e.which;
      else
         return null;
    }
    function restrictChars(e, obj)
    {
      var CHAR_AFTER_DP = 2;  // number of decimal places
      var validList = "0123456789.";  // allowed characters in field
      var key, keyChar;
      key = getKey(e);
      if (key == null) return true;
      // control keys
      // null, backspace, tab, carriage return, escape
      if ( key==0 || key==8 || key==9 || key==13 || key==27 )
         return true;
      // get character
      keyChar = String.fromCharCode(key);
      // check valid characters
      if (validList.indexOf(keyChar) != -1)
      {
        // check for existing decimal point
        var dp = 0;
        if( (dp = obj.value.indexOf( ".")) &gt; -1)
        {
          if( keyChar == ".")
            return false;  // only one allowed
          else
          {
            // room for more after decimal point?
            if( obj.value.length - dp &lt;= CHAR_AFTER_DP)
              return true;
          }
        }
        else return true;
      }
      // not a valid character
      return false;
    }
  &lt;/script&gt;
  </code></pre>