Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 只允许JS中的数字并验证过去_Javascript_Jquery - Fatal编程技术网

Javascript 只允许JS中的数字并验证过去

Javascript 只允许JS中的数字并验证过去,javascript,jquery,Javascript,Jquery,我有一个只允许按键输入数字的函数,我如何更改此函数的ou方法调用,所以当我按ctrl+v键时,也要验证值 function isNumberKey(evt, obj) { var containsDot = obj.value.indexOf("."); var nrDecimals = Decimals(obj.value, "."); var charCode = (evt.which) ? evt.which : event.keyCode; if (ch

我有一个只允许按键输入数字的函数,我如何更改此函数的ou方法调用,所以当我按ctrl+v键时,也要验证值

function isNumberKey(evt, obj) {
    var containsDot = obj.value.indexOf(".");
    var nrDecimals = Decimals(obj.value, ".");

    var charCode = (evt.which) ? evt.which : event.keyCode;
    if (charCode == 8 || charCode == 9) {
        return true;
    } else if (charCode > 31 && (charCode < 48 || charCode > 57)) {
        if (charCode == 46 && containsDot < 0) {
            return true;
        }
        return false;
    }
    if (nrDecimals > 2) {
        return false;
    }
    return true;
}
函数是numberkey(evt,obj){
var containsDot=obj.value.indexOf(“.”);
var nR小数=小数(目标值“.”;
var charCode=(evt.which)?evt.which:event.keyCode;
if(charCode==8 | | charCode==9){
返回true;
}否则如果(字符编码>31&(字符编码<48 | |字符编码>57)){
if(charCode==46&&containsDot<0){
返回true;
}
返回false;
}
如果(nR小数>2){
返回false;
}
返回true;
}
我这样称呼它

onkeypress=“return isNumberKey(事件,this);”


您可以使用jQuery。根据您的要求更改以下代码

$(document).ready(function() {
        $("#id")
           .bind('copy', function(e) {
                alert('copying!');
            })
            .bind('paste', function(e) {
                alert('pasting!');
            })
            .bind('cut', function(e) {
                alert('cut!');
            });
    });
如果您想使用平面javascript。我认为下面的方法可行,但不确定浏览器的兼容性

<input type="text" onpaste="callFunc()" />

如果您只希望输入数字,可以执行以下操作:

onkeyup="this.value = this.value.replace(/[^0-9]+/, '');"
这将替换该值中的所有非数字字符。这与您的整个函数的作用大致相同,而且它与粘贴一起工作

您需要将
onkeypress
更改为
onkeypup



对于完整的解决方案,您需要切换到更复杂的代码。正如下面的一条评论所说,您也可以右键单击->粘贴。这不会抓住那个。您需要将多个事件(keypress、keyup、click都是事件的示例)绑定到该输入。如果幸运的话,
focus
会捕捉到它(如果右键单击使其模糊,粘贴后将其聚焦)。

可能的解决方案:除了复制粘贴,用户还可以拖放文本,如果您可以在表单提交时验证添加的链接会更好。您的代码中不需要它,但我认为突出显示此用户和其他用户的可能性是一个好主意,因为它在jQuery中是一个强大的优势,“加上它与粘贴一起工作。”-嗯,这是一个好主意。我认为应该是onkeyup对过去并不确定,这就是我建议更改为keyup的原因。修正了:)