5

我发现这个非常简短的干净代码只允许在文本字段中使用数字字符。目前它仅涵盖数字 0-9 以及退格和删除。我希望它也包括小数/句点,所以我一直在努力解决这个问题,只包括键码 110 和/或 190。我无法让它工作。谁能看到我做错了什么?

$(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>
4

3 回答 3

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);
    });
});​

JsFiddle:http: //jsfiddle.net/EN8pT/1/

于 2012-07-13T15:28:04.443 回答
1

有了上面的答案,你仍然可以做 0.23.12.33 这不是一个有效的数字。

http://www.texotela.co.uk/code/jquery/numeric/是一个很棒的轻量级插件,我用过很多次。它消除了上述痛苦。

于 2013-07-12T05:02:32.587 回答
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

于 2013-09-24T14:13:32.660 回答