怎样控制才使得文本框不能输入数字以外的字符?

求助:怎样控制才使得文本框不能输入数字以外的字符??
是这样的,我在html页面中定义了一个text文档,然后想通过onkeydown事件控制它只能输入0-9的数字,或者“-”和“.”,其它的字符则被看成非法字符,这些我是用ASC码判断的。

于是,当判断完是非法字符时,我使用如下语句:
document.form1.textfield.value   =     Initial_Num;
Initial_Num是我获取的文本框中的原值,当输入非法字符时,我强制该文本框的值等于原值,这样看起来就是输入不进去的效果了。

但是问题出现了,好象这么做仍然能输入其他字符。于是我想把该文本框清空,使用如下语句:
document.form1.textfield.value   =   " ";
但是仍然不行,如果输入a,它还会显示出a,因为这个a是后来onkeydown事件输入进去的,就清除不掉了。

请问有没有什么更好的办法达到这种效果?
(我用的molliz浏览器)

ps:还有个问题,谁能帮忙解释一下isNaN的用法?谢谢!我还是个初学者!

------解决方案--------------------
IE: <input onkeypress= "return /\d/.test(String.fromCharCode(event.keyCode)); " />
IE||FF <input onkeyup= "value=value.replace(/\D/g, ' ') ">
------解决方案--------------------
<input type=text onkeypress= "if ((event.keyCode < 45 || event.keyCode > 57)&&event.keyCode!=32) event.returnValue = false; ">
------解决方案--------------------
function CheckInteger(Field, FieldTitle)
{
if (Field.value != " ")
{
for (i = 0; i < Field.value.length; i++)
{
ch = Field.value.charAt(i);

if ( (ch < '0 ' || ch > '9 ') && ch != '- ' ) {
alert( "\ " " + FieldTitle + "\ "中只能输入数字. ");
Field.focus();
return false;
}
}
}

return true;
}
------解决方案--------------------
<input type= "text " onkeyup= "value=value.replace(/^[0-9-\.]*$/g, ' ') " >
------解决方案--------------------
<html>
<head>
<meta http-equiv= "Content-Type " content= "text/html; charset=gb2312 ">
<title> </title>
</head>
<body>

<form name= "form1 ">
<input name= '0103 ' value= "OK ">
<input name= 'aa ' value= "aa ">
</form>
<script language= "Javascript ">
alert(document.form1.all( "0103 ").value)
alert(document.form1.aa.value);
</script>

</body>
</html>