javascript - 只允许数字和一位小数

标签 javascript

伙计们,我有这段 JavaScript 代码,它只允许数字和一个小数点。我遇到的问题是,当我切换到我的文本框控件时,它会突出显示该值,但我按退格键删除然后输入一个数字。这是我想防止的额外击键。

创建它的人的 Prop 找到了( http://www.coderanch.com/t/114528/HTML-CSS-JavaScript/decimal-point-restriction ),这是代码。我把它放在 keyUp 事件上。

 <script>
  // 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( ".")) > -1)
      {
        if( keyChar == ".")
          return false;  // only one allowed
        else
        {
          // room for more after decimal point?
          if( obj.value.length - dp <= CHAR_AFTER_DP)
            return true;
        }
      }
      else return true;
    }
    // not a valid character
    return false;
  }
</script>

最佳答案

<input type="text" class="decimal" value="" />

在 Js 中使用这个
$('.decimal').keyup(function(){
    var val = $(this).val();
    if(isNaN(val)){
         val = val.replace(/[^0-9\.]/g,'');
         if(val.split('.').length>2) 
             val =val.replace(/\.+$/,"");
    }
    $(this).val(val); 
});

检查这个 fiddle :http://jsfiddle.net/2YW8g/

这对我有用,我从“Nickalchemist”那里得到了这个答案并且不相信它。

关于javascript - 只允许数字和一位小数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14609521/

相关文章:

javascript - 初始化 DIV 中的按钮元素

javascript - knockout 绑定(bind)继承的 javascript 对象

javascript - 如何用另一个 Angular 图像更新一个div?

javascript - 如何通过与模型比较将特定缺失的字段添加到 json 对象

javascript - 如何从 jQuery 获取变量以发挥作用?

javascript - 使用 DontEnum 设置自定义属性

javascript - 如何使用 Symfony3 和 Ajax 将tinyMCE 文本区域编辑器内容发送到内部 Controller

javascript - 防止在 MongoDB 中创建重复的 ID

javascript - padStart() 在 IE11 中不工作

javascript - 在 AngularJS 的 HTML img src 中使用字符串连接