最近有个小需求,要求用js实现只能让用户输入0-9的数字,考虑到输入,可能有集中情况:
1、用户从键盘输入;
2、用户用鼠标右键的黏贴功能;
3、用户使用ctrl+v;
所以,需要控制用户的键盘输入、禁用黏贴功能,代码实现如下:
<html>
<head>
<title>Input Limit Demo</title>
<script type="text/javascript" src="jquery.1.4.2-min.js"></script>
<script type="text/javascript">
//方式一:原生态js实现"只允许用户输入数字"
function limitInput(ele){
var numberLimit = function(e) {
e = e || window.event;
var k = (typeof e.which == "number") ? e.which : e.keyCode;
if((k<48 || k>57) && k!=8){
return false;
}
if(e.shiftKey && k >= 48 && k <= 57) {
return false;
}
return true;
};
ele["onkeydown"] = numberLimit;
}
window.onload = function(){
var ele = document.getElementById("lmInput1");
limitInput(ele);
}
//方式二:jQuery方式实现"只允许用户输入数字"
$(document).ready(function(){
$("#lmInput2").keydown(function(e){
var k = (typeof e.which == "number") ? e.which : e.keyCode;
if((k<48 || k>57) && k!=8){
return false;
}
if(e.shiftKey && k >= 48 && k <= 57) {
return false;
}
return true;
});
});
</script>
</head>
<body>
<div>原生态实现方式:<input type="text" id="lmInput1" value="" οnpaste="return false" /></div>
<div>jQuery实现方式:<input type="text" id="lmInput2" value="" οnpaste="return false" /></div>
</body>
</html>