Подтвердить что ты не робот

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)")
        }
}
4b9b3361

Ответ 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');" >