Javascript 禁止用户输入某些字符,同时允许其他用户使用jquery

Javascript 禁止用户输入某些字符,同时允许其他用户使用jquery,javascript,jquery,Javascript,Jquery,请帮我解决这个问题。。。奇怪的是,它一直工作到: if (key < 48 || key > 57){ //if it is not a number ascii code //Prevent default action, which is inserting character if (e.preventDefault) e.preventDefault(); e.returnValue = false; }

请帮我解决这个问题。。。奇怪的是,它一直工作到:

if (key < 48 || key > 57){ //if it is not a number ascii code
        //Prevent default action, which is inserting character
        if (e.preventDefault) e.preventDefault();
            e.returnValue = false;
    }


if(key<48 | | key>57){//如果不是数字ascii码
//防止默认操作,即插入字符
如果(e.preventDefault)e.preventDefault();
e、 returnValue=false;
}
防止用户输入任何非数字的值。下面的代码试图允许用户使用tab和delete等字符。出于某种原因,它不起作用,而且似乎在逻辑上应该如此

请帮助我或为我提供关于如何实现这一点的最新答案/良好指南

谢谢

<html>
<head>
<title>Registration</title>
<link href="style.css" rel="stylesheet" type="text/css">
</head>

<body>
<div class="homepagecontainer">
<div class="" style="margin:auto; width 600px;">
<form action="registration.php" method="post" name = "register" >
  <div style="width:50%; margin:auto;">
    <h1>Register</h1>
<button style = "width:100px;float:right;display:inlineblock;"onclick="goBack()">Go Back</button><br><br><br>

<script>
function goBack() {
  window.history.back();
}
</script>

    <p>Please fill in this form to create an account.</p>
    <hr>
    <label for="username"><b>Username:</b></label>
    <input type="text" placeholder="Username" name="username" pattern="[^-,]+" onKeyDown="ValidateName()" >

    <label style="width:50%" for="fname"><b>First Name:</b></label>
    <input type="text" placeholder="Enter First Name"  pattern="[^-,]+" name="fname">

    <label for="lname"><b>Last Name:</b></label>
    <input type="text" placeholder="Ender Last Name" pattern="[^-,]+" name="lname"><br><br>

    <label for="dob"><b>Date of Birth</b></label>
    <input type="date" placeholder="" name="dob" pattern="[^-,]+"> <br><br>

    <label for="ingame"><b>In Game Name:</b></label>
    <input type="text" placeholder="Enter In Game Name" name="ingame" pattern="[^-,]+">

    <label for="email"><b>Email</b></label>
    <input type="text" placeholder="Enter Email" name="email" pattern="[^-,]+">

    <label for="pw"><b>Password</b></label>
    <input type="password" placeholder="Enter Password" name="pw" pattern="[^-,]+">

    <label for="psw-repeat"><b>Confirm Password</b></label>
    <input type="password" placeholder="Repeat Password" name="confpw" pattern="[^-,]+">
    <hr>

    <p>By creating an account you agree to our <a href="#">Terms & Privacy</a>.</p>
    <button onclick="" name="register" type="submit" class="register">Register</button>
  </div>

  <div <div style="width:50%; margin;auto;">
    <p>Already have an account? <a href="#">Sign in (unfinished)</a>.</p>
  </div>
</form>
</div>
<div style="margin:auto;">
</body>
<footer>
    <p class="copyright">© Copyright 2019 Daniel Violante except where noted
Privacy Policy | Terms of Service
Endless Online © Copyright Vult-r Studios 
</p>
</footer>
</div>
</div>
</html>

<script>
function ValidateName() {
    var e = event || window.event;  // get event object
    var key = e.keyCode || e.which; // get key cross-browser

if (key < 48 || key > 57){ //if it is not a number ascii code
        //Prevent default action, which is inserting character
        if (e.preventDefault) e.preventDefault();
            e.returnValue = false;
    }
    if (key=8 || key==46 || key == 9 || key==17 || key==91 || key==18 || 
            key==116 || key==89 || key==67 || key==88 || key==35 || key==36)
            return true;
}


</script>

登记处
登记
返回


函数goBack(){ window.history.back(); } 请填写此表格以创建帐户


用户名: 名字: 姓氏:

出生日期

游戏名称: 电子邮件 密码 确认密码
通过创建帐户,您同意我们的

登记 57){//如果不是数字ascii码 //防止默认操作,即插入字符 如果(e.preventDefault)e.preventDefault(); e、 returnValue=false; } 如果(键=8 | |键==46 | |键==9 | |键==17 | |键==91 | |键==18 | 键==116 | |键==89 | |键==67 | |键==88 | |键==35 | |键==36) 返回true; }
$(“输入”)。关于(“输入”,函数(){
$(this.val($(this.val().replace(/[^0-9]/g');
})

文件

我应该把这个放在什么地方,这是什么意思?补充说明。如果缺少什么,请告诉我。