比如三位数字,两位小数,复制和拖拽的事件我屏蔽了。
<input onkeypress="return /^[1-9]\d{2}/.test(this.value)?(/\./.test(this.value)?(/\.\d{2}/.test(this.value)?(event.keyCode==46):(event.keyCode>=48&&event.keyCode<=57)):(event.keyCode==46)):(event.keyCode>=48&&event.keyCode<=57)"
onpaste="return false" ondragenter="return false" style="ime-mode:disabled">
<input onkeypress="return /^[1-9]\d{2}/.test(this.value)?(/\./.test(this.value)?(/\.\d{2}/.test(this.value)?(event.keyCode==46):(event.keyCode>=48&&event.keyCode<=57)):(event.keyCode==46)):(event.keyCode>=48&&event.keyCode<=57)"
onpaste="return false" ondragenter="return false" style="ime-mode:disabled">
<HTML>
<HEAD>
<TITLE> New Document </TITLE>
<SCRIPT LANGUAGE="JavaScript">
<!--
function checknum()
{
var intConut = '2';
var floatCount = '2'; var str = "/^[1-9]\d{" + intConut + "}/.test(window.event.srcElement.value)?(/\./.test(window.event.srcElement.value)?(/\.\d{" + floatCount + "}/.test(window.event.srcElement.value)?(event.keyCode==46):(event.keyCode>=48&&event.keyCode<=57)):(event.keyCode==46)):(event.keyCode>=48&&event.keyCode<=57)";
return eval(str);}//-->
</SCRIPT>
</HEAD><BODY>
<input onkeypress="checknum()"
onpaste="return false" ondragenter="return false" style="ime-mode:disabled">
</BODY>
</HTML>
为什么我写成上面的函数形式就无法检测呢,还报错:(
要写成new RegExp()这种
onpaste="return false" ondragenter="return false" style="ime-mode:disabled">
<script language=javascript>
function show(obj,m,n)
{ var re1=new RegExp("^[1-9]\\d{"+(m-1)+"}")
var re2=new RegExp("\\.\\d{"+n+"}")
if(re1.test(obj.value))
{
if(/\./.test(obj.value))
{
if(re2.test(obj.value))
{
event.returnValue=false;
}
else
{
if(!(event.keyCode>=48&&event.keyCode<=57))
{
event.returnValue=false;
}
}
}
else
{
if(event.keyCode!=46)
{
event.returnValue=false;
}
}
}
else
{
if(!(event.keyCode>=48&&event.keyCode<=57))
{
event.returnValue=false;
}
}
}
</script>
{ var intreg = new RegExp("/^[1-9]\d{2}/");
var dotreg = new RegExp("/\./");
var floatreg = new RegExp("/\.\d{2}/"); var myvalue = window.event.srcElement.value; var str = "intreg.test(myvalue)?(dotreg.test(myvalue)?(floatreg.test(myvalue)?(event.keyCode==46):(event.keyCode>=48&&event.keyCode<=57)):(event.keyCode==46)):(event.keyCode>=48&&event.keyCode<=57)"; return eval(str);
}<input id='test' onkeypress="return checknum()"
onpaste="return false" ondragenter="return false" style="ime-mode:disabled">难道是语法还有问题吗,js比java怎么难这么多:(
var intreg = new RegExp("/^[1-9]\d{2}/");
这里需要转意
var intreg = new RegExp("/^[1-9]\\d{2}/");
并且在函数中直接return好象不行