【问题标题】:onkeyup do nothing for some charonkeyup 对某些字符什么也不做
【发布时间】:2011-12-27 15:17:47
【问题描述】:

我已经制作了这个 jquery 代码

$(document).ready(function(){
    $(".graduate").keyup(function(e){
        if(e.keyCode!=8 && (e.keyCode<48 && e.keyCode>57)){
        //some code here
        };
    });
});

我希望输入忽略除整数之外的任何内容..

我发现了这个:但我不知道如何将其转换为 jquery 代码.. http://www.w3schools.com/jsref/tryit.asp?filename=tryjsref_onkeypress

function noNumbers(e)
{
var keynum;
var keychar;
var numcheck;

if(window.event) // IE
    {
    keynum = e.keyCode;
    }
else if(e.which) // Netscape/Firefox/Opera
    {
    keynum = e.which;
    }
keychar = String.fromCharCode(keynum);
numcheck = /\d/;
return numcheck.test(keychar);
}

上面的代码不允许我使用退格.. 有什么帮助吗?

【问题讨论】:

  • 另一种方法:检查输入中设置的值,如果不是数字(regexp、isNaN等),则将输入中的字符串返回到其先前的内容。
  • @Alfabravo 这个呢? stackoverflow.com/questions/891696/…
  • 别问我,试试看告诉我们!! :D(不知道插件,几年前我手动做过这样的验证:P)

标签: jquery keypress keyup


【解决方案1】:
$(".graduate")    
.bind('keydown', function(e) {
    var
    editingKeys = {
        '8'   : 'delete',
        '9'   : 'tab',
        '46'  : 'canc',
        '37'  : 'leftarrow',
        '39'  : 'rightarrow',
    },

    key = e.which || e.keycode,
    keynum = (key > 47) && (key < 58),
    keypad = (key > 95) && (key < 106);

    if (!keynum && !keypad) {
        return (key in editingKeys);
    }
});

【讨论】:

    【解决方案2】:

    jQuery 将“始终”为您提供e.which 中的键码。您可以在 keyup 处理程序内的 if 语句中安全地使用 e.which != 8。即..

    $(".graduate").keyup(function(e){
        if(e.which!=8 && (e.keyCode<48 && e.keyCode>57)){
            //some code here
        }
    });
    

    【讨论】:

    • 这不是问题..问题是我必须纠正直到//some code 忽略除整数之外的所有内容——返回 false 不起作用
    【解决方案3】:

    使用正则表达式:http://jsfiddle.net/DSvkS/

    $(document).ready(function(){
        $(".graduate").bind('keyup', function(event) {
            this.value = this.value.replace(/\D/g, "");
        });
    });
    

    \D表示除 0-9 以外的任何值。

    或支持.,http://jsfiddle.net/DSvkS/4/

    $(document).ready(function(){
        $(".graduate").bind('keyup', function(event) {
            this.value = this.value.replace(/[^0-9\.,]/g, "");
        });
    });
    

    [^...] 不代表...

    0-90,1,2,3,4,5,6,7,8,9

    \.. 我们必须使用 \ 转义点,因为点意味着匹配任何内容。

    ,,

    【讨论】:

    • 问题是当我将一些字符放入输入框时..我看到它并且消失了..这不好
    猜你喜欢
    • 2021-08-12
    • 1970-01-01
    • 1970-01-01
    • 2017-05-13
    • 2017-05-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-24
    相关资源
    最近更新 更多