2012-07-13 28 views
4

我发现这个非常简洁的代码,只允许在文本字段中的数字字符。目前它只覆盖数字0-9和退格和删除。我希望它也包含十进制/句点,所以我一直在与此战斗,只包括键码110和/或190.我无法让它工作。任何人都可以看到我做错了什么?jquery - 数字只有文本字段

$(document).ready(function() { 
    $('input.numberinput').bind('keypress', function(e) { 
return (e.which!=8 && e.which!=0 && (e.which<48 || e.which>57)) || (e.which!=110) ? false : true ; 
    }); 
    }); 

的jsfiddle这里http://jsfiddle.net/justmelat/EN8pT/

HTML

  <div class="label">Enter a number:</div> 
     <input type="text" name="txtNumber1" id="txtNumber1" value="" class="numberinput" /> 

     <div class="label">Enter a number:</div> 
     <input type="text" name="txtNumber2" id="txtNumber2" value="" class="numberinput" /> 
    </div> 
+0

为什么不使用''? – 2012-07-13 15:28:24

+0

@Andrew由于它是一个HTML5元素,因此在旧版浏览器(即IE8及以下版本,不确定IE9)中是不支持的。 – Bojangles 2012-07-13 15:30:32

+0

@JamWaffles我知道,我只问,因为浏览器从未指定。 – 2012-07-13 15:31:11

回答

6

尝试:

$(document).ready(function() { 
    $('input.numberinput').bind('keypress', function (e) { 
     return !(e.which != 8 && e.which != 0 && 
       (e.which < 48 || e.which > 57) && e.which != 46); 
    }); 
});​ 

JsFiddlehttp://jsfiddle.net/EN8pT/1/

+0

嗨,希望,这个没有骰子。句号/小数点不起作用。我在这里创建了一个jsfiddle:'http:// jsfiddle.net/justmelat/EN8pT /' – user1176783 2012-07-13 15:44:09

+0

回答更新。 – 2012-07-13 15:46:02

+0

工作正常!谢谢!!!!!!!!!!!!!!!! – user1176783 2012-07-13 15:48:31

0
$("#input").keydown(function(event) { 
var theEvent = event || window.event; 
var key = theEvent.keyCode || theEvent.which; 
    // Allow: backspace, delete, tab, escape, and enter 
    if (key == 46 || key == 8 || key == 9 || key == 27 || key == 13 || key == 110 || key == 190 || 
     // Allow: Ctrl+A 
     (key == 65 && theEvent.ctrlKey === true) || 
     // Allow: home, end, left, right 
     (key >= 35 && key <= 39)) { 
      // let it happen, don't do anything 
      return; 
    } 
    else { 
     // Ensure that it is a number and stop the keypress 
     if (theEvent.shiftKey || (key < 48 || key > 57) && (key < 96 || key > 105)) { 
      theEvent.preventDefault(); 
     } 

    } 
}); 

与键码110和190