贴一段代码,供大家参考
假如输入框要限制输入浮点型数据Number(5,4)--数据库设计表示,意即该数正数位数只能有一位,小数位数最多有四位,
我找了一段控制小数位数的代码,但是如果不输入小数,只输入整数又无法控制!<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE>控制小数位数</TITLE>
<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><META http-equiv=Content-Type content="text/html; charset=gb2312">
<META content="MSHTML 6.00.2800.1458" name=GENERATOR>
</HEAD>
<BODY><INPUT onkeypress="return regInput(this, /^\d{0,1}\.?\d{0,4}$/,String.fromCharCode(event.keyCode))"
onpaste="return regInput(this, /^\d{0,1}\.?\d{0,4}$/, window.clipboardData.getData('Text'))"
ondrop="return regInput(this, /^\d{0,1}\.?\d{0,4}$/, event.dataTransfer.getData('Text'))"
style="IME-MODE: disabled" value="">
</BODY>
</HTML>
假如输入框要限制输入浮点型数据Number(5,4)--数据库设计表示,意即该数正数位数只能有一位,小数位数最多有四位,
我找了一段控制小数位数的代码,但是如果不输入小数,只输入整数又无法控制!<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE>控制小数位数</TITLE>
<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><META http-equiv=Content-Type content="text/html; charset=gb2312">
<META content="MSHTML 6.00.2800.1458" name=GENERATOR>
</HEAD>
<BODY><INPUT onkeypress="return regInput(this, /^\d{0,1}\.?\d{0,4}$/,String.fromCharCode(event.keyCode))"
onpaste="return regInput(this, /^\d{0,1}\.?\d{0,4}$/, window.clipboardData.getData('Text'))"
ondrop="return regInput(this, /^\d{0,1}\.?\d{0,4}$/, event.dataTransfer.getData('Text'))"
style="IME-MODE: disabled" value="">
</BODY>
</HTML>
function CheckNumber(shuzi,weishu)
{
return new RegExp('^[+|-]*\\d{0,}(.){0,1}\\d{1,'+weishu+'}$', 'i').test(shuzi);
}//shuzi - 校验的字符串 weishu - 小数点位数
{
var a=document.form1.text1.value
var b=a.length
if((a%2==0|a%2==1)&a!=0) //判断是否为数值型并不为0既只能是正负数
{
if(String(a).indexOf(".")!=1)
{
if()
}
else
{ }
}
else
{
alert("您输入的不是数字")
}
}
大大小小也做过了好几个项目,关于提交时校验的脚本应该是没有任何问题的,现在我想做的是尽量在客户输入时做到最大程度上的控制,并且想搞出一个通用的页面控制和校验的脚本,校验方面目前问题不大,但控制方面好像还差了点,呵呵,希望各位高手不吝赐教!
我现在做项目是通过我们自己开发的一套工具控制的,每个数据项的基本属性都已经事先定义,基本上在页面上画好控件就行了,在body的onload事件里调用一套脚本来控制页面控件的输入和属性,在form的onsubmit事件里去校验输入数据。而我想做到的就是尽量让用户只能输入合法数据,(比如像一般的数据表的编码,只允许输入字母和数字,并控制控件的maxLength),目前遇到最大的问题是浮点型数据,比如oracle数据库中定义的number(5,4),实际上要求的是整数位数最多可有5-4=1位,而小数位数可能没有,或最多有4位,如果不加输入控制,用户很容易输入两位以上的整数的,关于这个问题,还真希望和朋友们讨论讨论我的关于此问题的blog:http://blog.csdn.net/191301587/archive/2004/09/27/117838.aspx,欢迎各位高手指教
http://blog.csdn.net/letsflytogether/archive/2004/09/21/111281.aspx
我这里实现了控制时间的输入,大家可以参考一下,看能不能有所帮助。
<script>
function isTime(str){
var a = str.match(/^(\d{0,4})-(\d{0,2})-(\d{0,2}) (\d{0,2}):(\d{0,2}):(\d{0,2})$/);
if (a == null) return false;
if (a[1]<1000 || a[2]>12 || a[3]>31 || a[4]>=24 || a[5]>=60 || a[6]>=60) return false;
return true;
}
function check(obj){
var range=obj.createTextRange();
var text = range.text;
var selrange = document.selection.createRange();
var seltext = selrange.text;
var startpos = 0,endpos = 0;
while(selrange.compareEndPoints("StartToStart",range)>0){
selrange.moveStart("character",-1);
startpos ++;
}
while(selrange.compareEndPoints("EndToStart",range)>0){
selrange.moveEnd("character",-1);
endpos ++;
}
if(event.keyCode>=48){
var keytext = String.fromCharCode(event.keyCode);
text = text.substring(0,startpos) + keytext + text.substring(endpos,text.length);
}else if(event.keyCode == 46){//delete
if(startpos == endpos)text = text.substring(0,startpos) + text.substring(startpos+1,text.length);
else text = text.substring(0,startpos) + text.substring(endpos,text.length);
}else if(event.keyCode == 8){
if(startpos == endpos)text = text.substring(0,startpos-1) + text.substring(startpos,text.length);
else text = text.substring(0,startpos) + text.substring(endpos,text.length);
}
window.status = text;
if(!isTime(text)){
event.returnValue = false;
}
}
</script>
<input id="date" onkeyDown="check(this)" value="1000-00-00 00:00:00">
{
return new RegExp('^[+|-]*\\d{1,'+zhangshu+'}(.){0,1}\\d{1,'+weishu+'}$', 'i').test(shuzi);
}//shuzi - 校验的字符串 zhengshu - 整数个数 weishu - 小数点位数刚刚看见你提出的错误,我已经修正
<script language="JavaScript">
<!--
function CheckNumber(shuzi,zhengshu,weishu)
{
return new RegExp('^[+|-]*\\d{1,'+zhengshu+'}(.){0,1}\\d{1,'+weishu+'}$', 'i').test(shuzi);
}//shuzi - 校验的字符串 zhengshu - 整数个数 weishu - 小数点位数
alert(CheckNumber(.1,2,1))
//-->
</script>
返回值竟然是true