it-swarm.com.ru

Проверьте, является ли ввод цифрой или буквой JavaScript

Я использую формы в HTML и JavaScript. Я хотел бы, чтобы предупреждение появлялось только в том случае, если пользователь вводитБУКВУи нажимает submit.

Итак, у меня есть HTML-код:

<form name="myForm" action="" onsubmit="return checkInp()" method="post">
    First name: <input type="text" name="age">
<input type="submit" value="Submit">   

И код JavaScript:

function checkInp()
{
var x=document.forms["myForm"]["age"].value;
if (x consists of any letters) // this is the code I need to change
{
alert("Must input numbers");
return false;
}
}
57
Greg Peckory

Вы можете использовать функцию isNaN, чтобы определить, не преобразуется ли значение в число Пример как ниже:

function checkInp()
{
  var x=document.forms["myForm"]["age"].value;
  if (isNaN(x)) 
  {
    alert("Must input numbers");
    return false;
  }
}
96
Bat_Programmer

Используйте Регулярное выражение , чтобы соответствовать только буквы. Также полезно знать, если вам когда-нибудь понадобится сделать что-то более сложное, например, убедиться, что это определенное количество цифр.

function checkInp()
{
    var x=document.forms["myForm"]["age"].value;
    var regex=/^[a-zA-Z]+$/;
    if (!x.match(regex))
    {
        alert("Must input string");
        return false;
    }
}

Еще лучше было бы отрицать что-либо кроме чисел:

function checkInp()
{
    var x=document.forms["myForm"]["age"].value;
    var regex=/^[0-9]+$/;
    if (x.match(regex))
    {
        alert("Must input numbers");
        return false;
    }
}
23
Kim Kling

Вы можете использовать функцию isNaN . Возвращает true, если данные не являются числом. Это было бы что-то вроде этого:

function checkInp()
{
    var x=document.forms["myForm"]["age"].value;
    if (isNaN(x)) // this is the code I need to change
    {
        alert("Must input numbers");
        return false;
    }
}

Примечание: isNan считает 10.2 допустимым числом.

9
mael

вы можете использовать isNaN (). он возвращает истину, когда данные не являются числами.

var data = 'hello there';
if(isNaN(data)){
  alert("it is not number");
}else {
  alert("its a valid number");
}
4
Deepak Gangore

Попробуй это:

if(parseInt("0"+x, 10) > 0){/* x is integer */}
3
Masoud Nazari

Просто найдите остаток, разделив на 1, то есть x% 1. Если остаток равен 0, это означает, что x является целым числом. В противном случае вы должны отобразить сообщение «Необходимо ввести цифры». Это будет работать даже в случае строк, десятичных чисел и т.д.

function checkInp()
{
    var x = document.forms["myForm"]["age"].value;
    if ((x%1) != 0) 
    {
        alert("Must input numbers");
        return false;
    }
}
3
Crypters
function isNumber(data){
    data = data +"e1";                      // Disallow eng. notation "10e2"+"e1" is NaN
    var clean = parseFloat(data,10) / data ; // 1 if parsed cleanly
    return (clean && (data/data) === 1.0);  // Checks for NaN
}

function isInteger(data){
    data = data +"e1";                      // Disallow eng. notation "10e2"+"e1" is NaN
    var clean = parseInt(data,10) / data ; // 1 if parsed cleanly
    return (clean && (data%1) === 0);          // Checks For integer and NaN
}
1
visibleman

Лучший (без ошибок) код будет выглядеть так:

function isReallyNumber(data) {
    return typeof data === 'number' && !isNaN(data);
}

Это также будет обрабатывать пустые строки. Другая причина, isNaN("12") равняется false, но "12" это строка, а не число, поэтому она должна приводить к true. Наконец, бонусная ссылка которая может вас заинтересовать.

1
Ram Patra

Я знаю, что этот пост старый, но он появился первым, когда я выполнил поиск. Я пытался @Kim Kling RegExp, но он с треском провалился. Также до нахождения этого форума я перепробовал практически все остальные варианты, перечисленные здесь. В конце концов, никто из них не работал, кроме того, который я создал; работает нормально, плюс это es6:

    let regex = new RegExp(/[^0-9]/, 'g');
    let x = document.forms["myForm"]["age"].value;

    if (x.match(regex)) {
       alert("Must be a valid number");
            return
    }
1
str8up7od

Лучший и современный способ это typeof (переменная), если вы заботитесь о действительном числе, а не числе из строки. Например:

var a = 1;
var b = '1';

typeof a: // Output: "number"
typeof b: // Output: "string
0
user8621657

Я думаю, что проще всего было бы создать объект Number со строкой и проверить, с помощью функции isInteger, предоставляемой самим классом Number.

Number.isInteger(Number('1')) //true
Number.isInteger(Number('1 mango')) //false
Number.isInteger(Number(1)) //true
Number.isInteger(Number(1.9)) //false
0
Vikas Bansal