запретить пользователю вводить определенные символы, в то время как другие могут использовать jquery - PullRequest
0 голосов
/ 26 сентября 2019

Пожалуйста, помогите мне с этой проблемой ... как ни странно, она работает до:

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;
    }


, что не позволяет пользователю вводить любое значение, которое не является числом.Следующий код пытается разрешить пользователю использовать такие символы, как 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>

1 Ответ

0 голосов
/ 26 сентября 2019

$("input").on("input", function(){
	$(this).val($(this).val().replace(/[^0-9]/g, ''));
})
<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Document</title>
	<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
</head>
<body>
	<input type="text">
</body>
</html>

Это заменит нечисловые символы ничем.

Как это работает

Добавление прослушивателя событий в область ввода,Это сработает, когда пользователь сделает ввод, включая вставку.

Когда это сработает, функция получит значение из целевого ввода и заменит пользовательский ввод, но только числовые символы.Любые символы, которые не являются числовыми, будут удалены.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...