哪位大神能帮我解决下js写的小键盘的一个小bug

JavaScript016

哪位大神能帮我解决下js写的小键盘的一个小bug,第1张

先说问题吧,问题在于你每次点击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。这样就可以知道是哪个按钮按下了。