先说问题吧,问题在于你每次点击input时候都给数字键盘绑定了click事件,这就导致在点击第二个input输入时,数字键盘已经绑定了2个click事件了,第一个input当然会输入了,解决方法就是在给数字键盘绑定click方法的时候取消前面的所有绑定
1. 长度限制<script>
function test()
...{
if(document.a.b.value.length>50)
...{
alert("不能超过50个字符!")
document.a.b.focus()
return false
}
}
</script>
<form name=a onsubmit="return test()">
<textarea name="b" cols="40" wrap="VIRTUAL" rows="6"></textarea>
<input type="submit" name="Submit" value="check">
</form>
2. 只能是汉字
<input onkeyup="value="/oblog/value.replace(/[^u4E00-u9FA5]/g,'')">
3." 只能是英文
<script language=javascript>
function onlyEng()
...{
if(!(event.keyCode>=65&&event.keyCode<=90))
event.returnvalue=false
}
</script>
<input onkeydown="onlyEng()">
4. 只能是数字
<script language=javascript>
function onlyNum()
...{
if(!((event.keyCode>=48&&event.keyCode<=57)||(event.keyCode>=96&&event.keyCode<=105)))
//考虑小键盘上的数字键
event.returnvalue=false
}
</script>
<input onkeydown="onlyNum()">
5. 只能是英文字符和数字
<input onkeyup="value="/oblog/value.replace(/[W]/g,"'') "onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^d]/g,''))">
6. 验证邮箱格式
<SCRIPT LANGUAGE=javascript RUNAT=Server>
function isEmail(strEmail) ...{
if (strEmail.search(/^w+((-w+)|(.w+))*@[A-Za-z0-9]+((.|-)[A-Za-z0-9]+)*.[A-Za-z0-9]+$/) != -1)
return true
else
alert("oh")
}
</SCRIPT>
<input type=text onblur=isEmail(this.value)>
7. 屏蔽关键字(这里屏蔽***和****)
<script language="javascript1.2">
function test() ...{
if((a.b.value.indexOf ("***") == 0)||(a.b.value.indexOf ("****") == 0))...{
alert(":)")
a.b.focus()
return false}
}
</script>
<form name=a onsubmit="return test()">
<input type=text name=b>
<input type="submit" name="Submit" value="check">
</form>
8. 两次输入密码是否相同
<FORM METHOD=POST ACTION="">
<input type="password" id="input1">
<input type="password" id="input2">
<input type="button" value="test" onclick="check()">
</FORM>
<script>
function check()
...{
with(document.all)...{
if(input1.value!=input2.value)
...{
alert("false")
input1.value = ""
input2.value = ""
}
else document.forms[0].submit()
}
9.身份证的验证
function isIdCardNo(num)
{
if (isNaN(num))
var len = num.length, re
if (len == 15)
re = new RegExp(/^(\d)()?(\d)(\d)(\d)(\d)$/)
else if (len == 18)
re = new RegExp(/^(\d)()?(\d)(\d)(\d)(\d)(\d)$/)
else
var a = num.match(re)
if (a != null)
{
if (len==15)
{
var D = new Date("19"+a[3]+"/"+a[4]+"/"+a[5])
var B = D.getYear()==a[3]&&(D.getMonth()+1)==a[4]&&D.getDate()==a[5]
}
else
{
var D = new Date(a[3]+"/"+a[4]+"/"+a[5])
var B = D.getFullYear()==a[3]&&(D.getMonth()+1)==a[4]&&D.getDate()==a[5]
}
if (!B)
}
return true
}
}
没有确切的方法,只能模拟绑定KeyPress事件,而且事件触发能通过按键的值。KeyPress事件主要用来捕获数字(注意:包括Shift+数字的符号)、字母(注意:包括大小写)、小键盘等除了F1-12、SHIFT、Alt、Ctrl、Insert、Home、PgUp、Delete、End、PgDn、ScrollLock、Pause、NumLock、{菜单键}、{开始键}和方向键外的ANSI字符。相关事件是keydown事件和keyup事件。相关的按键数字你可以网上找一下,如:enter =13 ,shift =16。这样就可以知道是哪个按钮按下了。