日期:2014-05-17  浏览次数:20921 次

让<input>只能输入数字和小数点的一些问题
我写的可以使用的是:
<input   type= "text "   name= "test "   id= "test "   value= " "   onkeypress= "if((event.keyCode <48||event.keyCode> 57)   &&   event.keyCode!=46){alert( '只能输入数字和小数点 ');return   false;} "   />


但是同时看到网上一些人写的只能输入数字的方法是:
onpropertychange= "if(/\D/.test(value))value=value.replace(/\D/g, ' ') "

我想问,这种写法是怎么写出来的?
/\D/.这些代码是什么意思?
onpropertychange和onchange有什么区别?

------解决方案--------------------
\D 匹配一个非数字字符。等价于 [^0-9]。
\ 将下一个字符标记为一个特殊字符、或一个原义字符、或一个 向后引用、或一个八进制转义符。例如, 'n ' 匹配字符 "n "。 '\n ' 匹配一个换行符。序列 '\\ ' 匹配 "\ " 而 "\( " 则匹配 "( "。/.匹配.

------解决方案--------------------
1 /xx/是正则表达式 \D在正则表达式中表示非0-9的字符
2 onpropertychang每当你输入字符改变原来值的时候就会出发。
onchange当你输入完毕,离开输入框,如果值和原来的不一样,才触发。
------解决方案--------------------
当一个HTML元素的属性改变的时候,都能通过onpropertychange来捕获。例如一个 <input name= "text1 " id= "text1 " /> 对象的value属性被页面的脚本修改的时候,onchange无法捕获到,而onpropertychange却能够捕获。