Javascript 只允许JS中的数字并验证过去
我有一个只允许按键输入数字的函数,我如何更改此函数的ou方法调用,所以当我按ctrl+v键时,也要验证值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
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的原因。修正了:)