Javascript - проверка, только цифры
Я пытаюсь получить свою регистрационную форму только для проверки, только если введены только номера. Я могу работать, если ввод - это только цифры, но когда я набираю символы после номера, он все равно проверяет и т.д. 12akf будет работать. 1am будет работать. Как я могу пройти мимо этого?
Часть входа
<form name="myForm">
<label for="firstname">Age: </label>
<input name="num" type="text" id="username" size="1">
<input type="submit" value="Login" onclick="return validateForm()">
function validateForm()
{
var z = document.forms["myForm"]["num"].value;
if(!z.match(/^\d+/))
{
alert("Please only enter numeric characters only for your Age! (Allowed input:0-9)")
}
}
Ответы
Ответ 1
Совпадение с /^\d+$/
. $
означает "конец строки", поэтому любые нецифровые символы после начального запуска цифр будут вызывать совпадение.
Edit:
RobG мудро предлагает более сжатый /\D/.test(z)
. Эта операция проверяет инверсию того, что вы хотите. Он возвращает true
, если на входе есть любые нечисловые символы.
Просто опустите отрицание !
и используйте if(/\D/.test(z))
.
Ответ 2
вот как проверить ввод, чтобы принимать только числа, это будет принимать числа, такие как 123123123.41212313
<input type="text"
onkeypress="if ( isNaN(this.value + String.fromCharCode(event.keyCode) )) return false;"
/>
и это не будет принимать ввод точки (.), поэтому он будет принимать только целые числа
<input type="text"
onkeypress="if ( isNaN( String.fromCharCode(event.keyCode) )) return false;"
/>
таким образом вы не позволяете пользователю вводить ничего, кроме цифр
Ответ 3
Это работало для меня:
function validateForm(){
var z = document.forms["myForm"]["num"].value;
if(!/^[0-9]+$/.test(z)){
alert("Please only enter numeric characters only for your Age! (Allowed input:0-9)")
}
}
Ответ 4
Поздний ответ, но может быть, это поможет кому-то
function isNumber(n) {
return !isNaN(parseFloat(n)) && isFinite(n);
}
Использование будет выглядеть как
nn=document.forms["myForm"]["num"].value;
ans=isNumber(nn);
if(ans)
{
//only numbers
}
Этот ans был найден здесь с огромным голосом
Подтвердить номера в JavaScript - IsNumeric()
Ответ 5
Регулярные выражения велики, но почему бы просто не убедиться, что это число, прежде чем пытаться что-то сделать с ним?
function addemup() {
var n1 = document.getElementById("num1");
var n2 = document.getElementById("num2");
sum = Number(n1.value) + Number(n2.value);
if(Number(sum)) {
alert(sum);
} else {
alert("Numbers only, please!");
};
};
Ответ 6
Простейшее решение.
Благодаря моему партнеру, который дал мне этот ответ.
Вы можете установить onkeypress событие в текстовом поле input следующим образом:
onkeypress="validate(event)"
а затем используйте регулярные выражения следующим образом:
function validate(evt){
evt.value = evt.value.replace(/[^0-9]/g,"");
}
Он будет сканировать и удалять любую букву или знак, отличающиеся от числа в поле.
Ответ 7
function ValidateNumberOnly()
{
if ((event.keyCode < 48 || event.keyCode > 57))
{
event.returnValue = false;
}
}
эта функция разрешает только номера в текстовом поле.
Ответ 8
Нет необходимости в длинном коде для ограничения ввода номера, просто попробуйте этот код.
Он также принимает действительные значения int и float для обоих значений.
Подход к Javascript
onload =function(){
var ele = document.querySelectorAll('.number-only')[0];
ele.onkeypress = function(e) {
if(isNaN(this.value+""+String.fromCharCode(e.charCode)))
return false;
}
ele.onpaste = function(e){
e.preventDefault();
}
}
<p> Input box that accepts only valid int and float values.</p>
<input class="number-only" type=text />
Ответ 9
var elem = document.getElementsByClassName("number-validation"); //use the CLASS in your input field.
for (i = 0; i < elem.length; i++) {
elem[i].addEventListener('keypress', function(event){
var keys = [48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 0];
var validIndex = keys.indexOf(event.charCode);
if(validIndex == -1){
event.preventDefault();
}
});
}
Ответ 10
Используя форму, которую вы уже имеете:
var input = document.querySelector('form[name=myForm] #username');
input.onkeyup = function() {
var patterns = /[^0-9]/g;
var caretPos = this.selectionStart;
this.value = input.value.replace(patterns, '');
this.setSelectionRange(caretPos, caretPos);
}
Это приведет к удалению всех нецифровых знаков после отпускания ключа.
Ответ 11
//Я использую этот jquery, он отлично работает, просто добавьте класс nosonly в любое текстовое поле, которое должно быть только для чисел:
$(document).ready(function () {
$(".nosonly").keydown(function (event) {
// Allow only backspace and delete
if (event.keyCode == 46 || event.keyCode == 8) {
// let it happen, don't do anything
}
else {
// Ensure that it is a number and stop the keypress
if (event.keyCode < 48 || event.keyCode > 57) {
alert("Only Numbers Allowed"),event.preventDefault();
}
}
});
});
Ответ 12
Я думаю, что мы не принимаем длинное структурное программирование, мы будем добавлять каждый раз код выстрела, смотрите ответ ниже.
<input type="text" oninput="this.value = this.value.replace(/[^0-9.]/g, ''); this.value = this.value.replace(/(\..*)\./g, '$1');" >