我有一个价格字段,我只想接受数字(我不喜欢默认的 html5 输入,如 input[number] 等)所以我写了这个:
<input type="text" name="price" placeholder="" onkeypress="validate(event)">
function validate(evt) {
var theEvent = evt || window.event;
var key = theEvent.keyCode || theEvent.which;
key = String.fromCharCode( key );
var code = theEvent.keyCode || theEvent.which;
var regex = /[0-9]/;
if( !regex.test(key) && code != 8/*backspace*/ && code != 37/*left*/ && code != 39/*right*/ && code != 13/*enter*/ && code != 46/*delet*/ && code != 9/*tab*/){
theEvent.returnValue = false;
if(theEvent.preventDefault) theEvent.preventDefault();
};
};
如您所见,添加了一些字符,如左右箭头键、选项卡等,以实现更好的导航。它在 Chrome 中完美运行。在 Firefox 中,一些字符是无意添加的。例如左箭头键和%的键码是一样的!所以现在我的价格字段在 Firefox 中接受 % !我还发现了一个简单的正则表达式代码,同样的问题。我怎样才能让火狐看懂?!