以下是我写的方法:实现只能输入数字与小数点,如果有错误立即退格(大家可以试试我的方法) 但是有不完善之处
想最多只能输入一个 . 而且小数点后最多2位数字
<input name="FullRate" id="Text2" type="text" maxlength="10" onblur="CheckInputSelect(this)" onkeyup="CheckInputSelect(this)" />
function CheckInputFloat(oInput) {
var value = "";
var reg = "";
if (oInput.value == "") return;
if (oInput.value.substring(0, 1) == "-") {
value = oInput.value.substring(1, oInput.value.length);
reg = "-";
}
else {
value = oInput.value;
} if (oInput.value.substring(0, 1) == ".") {
value = oInput.value.substring(1, oInput.value.length);
reg = "";
}
else {
value = oInput.value;
} if ('' != value.replace(/\d/g, '')) {
value = value.replace(/[^0-9\.]/g, '');
//value = value.replace(/\d+(\.?\d{0,2})?/g, '');
//alert("OK");
}
oInput.value = reg + value;
}
想最多只能输入一个 . 而且小数点后最多2位数字
<input name="FullRate" id="Text2" type="text" maxlength="10" onblur="CheckInputSelect(this)" onkeyup="CheckInputSelect(this)" />
function CheckInputFloat(oInput) {
var value = "";
var reg = "";
if (oInput.value == "") return;
if (oInput.value.substring(0, 1) == "-") {
value = oInput.value.substring(1, oInput.value.length);
reg = "-";
}
else {
value = oInput.value;
} if (oInput.value.substring(0, 1) == ".") {
value = oInput.value.substring(1, oInput.value.length);
reg = "";
}
else {
value = oInput.value;
} if ('' != value.replace(/\d/g, '')) {
value = value.replace(/[^0-9\.]/g, '');
//value = value.replace(/\d+(\.?\d{0,2})?/g, '');
//alert("OK");
}
oInput.value = reg + value;
}
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>Untitled Page</title>
</head>
<body>
<script>
function regInput(obj, reg, inputStr) {
var docSel = document.selection.createRange()
if (docSel.parentElement().tagName != "INPUT") return false
oSel = docSel.duplicate()
oSel.text = ""
var srcRange = obj.createTextRange()
oSel.setEndPoint("StartToStart", srcRange)
var str = oSel.text + inputStr + srcRange.text.substr(oSel.text.length);
return reg.test(str)
}
</script>
<input type="text" id="txt" onkeypress = "return regInput(this,/^(-|-\d*|-\d*.|\d*|\d*.|\d*\.[0-9]{0,2}|0)$/,String.fromCharCode(event.keyCode))">
</body>
</html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title> new document </title>
<meta name="generator" content="editplus" />
<meta name="author" content="" />
<meta name="keywords" content="" />
<meta name="description" content="" />
<script type="text/javascript">
<!-- function CheckInputFloat(oInput, isBlur) { if (oInput.value == "") return; var value = oInput.value;
var reg;
if (isBlur)
reg = /^[^0]\d*(\.\d{1,2})?$/g;
else
reg = /^[^0]\d*(\.|\.\d{1,2})?$/g; if (!reg.test(value))
oInput.value = oInput.value.substr(0, oInput.value.length-1);
} //-->
</script>
</head> <body>
<input name="FullRate" id="Text2" type="text" maxlength="10" onblur="CheckInputFloat(this, true)" onkeyup="CheckInputFloat(this)" /> </body>
</html>
<script type="text/javascript">
function myfilter(e) {
var obj=e.srcElement || e.target;
var dot=obj.value.indexOf(".");//alert(e.which);
var key=e.keyCode;
if(key==0)
key=e.which;
if(key==8 || key==9 || key==46 || (key>=37 && key<=40))//这里为了兼容Firefox的backspace,tab,del,方向键
return true;
if (key<=57 && key>=48) { //数字
if(dot==-1)//没有小数点
return true;
else if(obj.value.length<=dot+2)//两位小数
return true;
} else if((key==46) && dot==-1){//小数点
return true;
}
return false;
}
</script>
<input type="text" id="ttext" onkeypress="return myfilter(event)" />
可以window.onload = function(){
document.getElementById('Text2').onblur = function(){
//Your code is here
};
};
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>Untitled Page</title>
</head>
<script>
var Reg=new Object();
Reg.NOCHECK=/^(-|-\d*|-\d*\.|\d*|\d*\.|\d*\.[0-9]{0,2}|-\d*\.[0-9]{0,2}|0)$/
window.onload=function(){
document.getElementById("txt").onkeypress = function() {
return regInput(event,String.fromCharCode(event.keyCode))
}
}
function regInput(e,inputStr) {
var _obj=e.srcElement||e.target;
var docSel = document.selection.createRange()
if (docSel.parentElement().tagName != "INPUT") return false
var _oSel = docSel.duplicate()
_oSel.text = ""
var srcRange = _obj.createTextRange()
_oSel.setEndPoint("StartToStart", srcRange)
var _sInputText = _oSel.text + inputStr + srcRange.text.substr(_oSel.text.length);
return Reg.NOCHECK.test(_sInputText)
}
</script>
<body> <input type="text" id="txt" >
</body>
</html>