复制和粘贴时不允许文本框中的小数和文本值

sat*_*mar 5 html javascript css jquery

我不想允许在文本框中输入、复制和粘贴十进制值和字母表。我可以输入负值。但是负号(" - ") 应该总是在开头。请看下面的小提琴。在这个小提琴中它不允许十进制值和字母表。但是,如果我像这样复制并粘贴“22.50”,它将采用十进制值。我怎么能限制这个。

我的要求,

1) 只允许数字(正数和负数)。

2)“ - ”符号应在开头。不允许在中间或某处。

3) 字母甚至不应该允许复制粘贴。

4)我可以复制粘贴数字,如“2222”和“-2222”。但不是字符和小数。

小提琴

var input = document.getElementById("myInput");

input.onkeypress = function(e) {    e = e || window.event;
    var charCode = (typeof e.which == "number") ? e.which : e.keyCode;

    // Allow non-printable keys
    if (!charCode || charCode == 8 /* Backspace */ ) {
        return;
    }

    var typedChar = String.fromCharCode(charCode);

    // Allow numeric characters
    if (/\d/.test(typedChar)) {
        return;
    }

    // Allow the minus sign (-) if the user enters it first
    if (typedChar == "-" && this.value == "") {
        return;
    }

    // In all other cases, suppress the event
    return false;
};
Run Code Online (Sandbox Code Playgroud)
<input type="text" maxlength="10" id="myInput">
Run Code Online (Sandbox Code Playgroud)

请帮我做这件事。

Mun*_*wir 1

您可以使用 jquery 监听输入字段中的变化,如下所示

$('#myInput').bind('input', function(e) {
    //handle the input text here
});
Run Code Online (Sandbox Code Playgroud)

如果您不想在字符串包含无效文本时不显示任何内容,可以将输入字段的值设置为空,如下所示

$("#myInput").val("");
Run Code Online (Sandbox Code Playgroud)

更新 :

这是演示

$('#myInput').bind('input', function(e) {
var str = $("#myInput").val();
var dec = str.indexOf(".");
var first_char = str.charAt(0);
var isNumber = true;
var haveDecimal = false;

if (first_char == '-' || !isNaN(first_char)) {
    for (i=1; i<str.length; i++) {
        if(isNaN(str.charAt(i)) && str.charAt(i) != '.') {
            isNumber = false;
            break;
        }
    }
}
else {
    isNumber = false;
}

if(dec != -1 && isNumber) {
    str = str.substring(0, str.indexOf("."));
}

if (isNumber) {
    $("#myInput").val(str);
}
else {
    $("#myInput").val("");
}
});
Run Code Online (Sandbox Code Playgroud)

JSFiddle:http://jsfiddle.net/7XLqQ/99/