Ik wil een if-statement gebruiken om code alleen uit te voeren als de gebruiker een letter of een cijfer typt.
Ik zou kunnen gebruiken
if (event.keyCode == 48 || event.keyCode == 49 || event.keyCode == 50..) {
// run code
}
Is er een eenvoudigere manier om dit te doen? Misschien werken sommige keycodes niet in alle webbrowsers?
Antwoord 1, autoriteit 100%
Als u een reeks letters wilt controleren, kunt u groter dan en kleiner dan gebruiken:
if (event.keyCode >= 48 && event.keyCode <= 57)
alert("input was 0-9");
if (event.keyCode >= 65 && event.keyCode <= 90)
alert("input was a-z");
Gebruik voor een meer dynamische controle een reguliere expressie:
var inp = String.fromCharCode(event.keyCode);
if (/[a-zA-Z0-9-_ ]/.test(inp))
alert("input was a letter, number, hyphen, underscore or space");
Zie de MDC-documentatievoor de keyCode
eigenschap, wat het verschil verklaart tussen dat en de eigenschap which
en op welke gebeurtenissen ze van toepassing zijn.
Antwoord 2, autoriteit 20%
Gebruik event.key
en moderne JS!
Geen cijfercodesmeer. U kunt key
rechtstreeks controleren.
const key = event.key.toLowerCase();
if (key.length !== 1) {
return;
}
const isLetter = (key >= "a" && key <= "z");
const isNumber = (key >= "0" && key <= "9");
if (isLetter || isNumber) {
// Do something
}
U kunt ook een eenvoudige regex gebruiken. ^$
zorgt voor 1 teken, i
negeert hoofdletters
/^[a-z0-9]$/i.test(event.key)
of individueel:
const isLetter = /^[a-z]$/i.test(event.key)
const isNumber = /^[0-9]$/i.test(event.key)
Antwoord 3, autoriteit 18%
Als u dit doet, zorg er dan eerst voor dat het in de gebeurtenis keypress
staat, de enige gebeurtenis waarvoor u op betrouwbare wijze informatie kunt verkrijgen over het teken dat de gebruiker heeft getypt. Dan zou ik de aanpak gebruiken die Andy E voorstelde:
document.onkeypress = function(evt) {
evt = evt || window.event;
var charCode = evt.which || evt.keyCode;
var charStr = String.fromCharCode(charCode);
if (/[a-z0-9]/i.test(charStr)) {
alert("Letter or number typed");
}
};
Als je op backspace wilt controleren, zou ik in plaats daarvan de gebeurtenis keydown
gebruiken en controleren op een keyCode
van 8 omdat verschillende browsers (inclusief Chrome) niet starten een keypress
-gebeurtenis voor de backspace-toets.
Antwoord 4, autoriteit 4%
if(event.keyCode >= 48 && event.keyCode <= 90) {
//the key pressed was alphanumeric
}
Antwoord 5
Zoals @Gibolt al zei,
je moet event.key gebruiken
Omdat charCode, keyCode en Welke worden afgeschaft.
Antwoord 6
Voor numerieke waarden:
function ValidNumeric()
{
var charCode = (event.which) ? event.which:event.KeyCode;
if (charCode>=48 && charCode<=57)
{
return true;
}
else
return false;
}
Hier is 48 en 57 het bereik van numerieke waarden.
Voor alfabetisch:
function ValidAplpha()
{
var charCode = (event.which) ? event.which:event.KeyCode;
if(charCode >= 65 && charCode <= 90 || charCode>=97 && charCode<=122)
{
return true;
}
else
return false;
}
Hier is 65 tot 90 het bereik voor Capital alphabates (A-Z) en 97 tot 122 is het bereik voor kleine alphabates (a-z)
Antwoord 7
$('#phone').on('keydown', function(e) {
let key = e.charCode || e.keyCode || 0;
//32 = space - border of visible and non visible characters - allows us to backspace and use arrows etc
//127 - delete
if (key > 32 && (key < 48 || key > 58) && key !== 127) {
e.preventDefault();
return false;
}
});
Antwoord 8
Om letters te detecteren & getallen bij gebruik van <input>
of <textarea>
kunt u de gebeurtenis input
gebruiken.
Deze gebeurtenis wordt geactiveerd wanneer de waarde van <input>
of <textarea>
verandert, dus u hoeft zich geen zorgen te maken over toetsen zoals Alt, Shift, pijlen enz. Nog meer – als u de muis gebruikt om een deel van de tekst te knippen, wordt de gebeurtenis ook geactiveerd.
var element = document.getElementById('search');
element.addEventListener('input',function(e){
console.log(element.value);
});
<input id="search" type="text" placeholder="Search" autocomplete="off">
Antwoord 9
U kunt eenvoudig uw Html-formulieren als volgt in het invoerveld toevoegen:
...onkeypress ="return /[a-z .@ 0-9]/i.test(event.key)" required accesskey="4"
Je hebt geen functie nodig. Deze validatie werkt alleen met het veld email
. Gebruik geen naam of nummer. Om nummer te gebruiken, verwijdert u de reguliere expressie van e-mail als volgt:
...onkeypress ="return /[a-z ]/i.test(event.key)" required accesskey="4"
Alleen voor nummer:
...onkeypress ="return /[0-9]/i.test(event.key)" required accesskey="4"
Vergeet niet om voor elk invoerveld een eigen waarde toe te voegen.
<div class="form-group">
<input type="Email" class="form-control " id="EMAILADDRESS" name="EMAILADDRESS" placeholder="Email Address" autocomplete="false" onkeypress ="return /[a-z .@ 0-9]/i.test(event.key)" required accesskey="4"/>
</div>
Antwoord 10
nummervalidatie, werkt prima voor mij
$(document).ready(function () {
$(".TxtPhone").keypress(function (e) {
var key = e.charCode || e.keyCode || 0;
// only numbers
if (key < 48 || key > 58) {
return false;
}
});
});
Antwoord 11
U kunt charCodeook gebruiken met onKeyPressgebeurtenis:
if (event.charCode > 57 || event.charCode < 48) {
itsNotANumber();
}
else {
itsANumber();
}
Antwoord 12
gebruik $.isNumeric(value);
retourtype is boolean
Antwoord 13
Accepteer cijfers of letters met javascript door Dynamic Process met behulp van reguliere expressie.
Onkeypress-gebeurtenis toevoegen voor specifieke besturing
onkeypress=”javascript:return isNumber(event)”
function numOnly(evt) {
evt = evt || window.event;
var charCode = evt.which || evt.keyCode;
var charStr = String.fromCharCode(charCode);
if (/[0-9]/i.test(charStr)) {
return true;
}
else
return false;
}
function Alphanum(evt) {
evt = evt || window.event;
var charCode = evt.which || evt.keyCode;
var charStr = String.fromCharCode(charCode);
if (/[a-z0-9]/i.test(charStr)) {
return true;
}
else
return false;
}